کار با مدیریت صفحه‌گسترده

کار با مدیریت صفحه‌گسترده

کار با مدیریت صفحات گسترده

کلاس Workbook ریشهٔ تمام عملیات صفحات گسترده در Aspose.Cells FOSS برای .NET است. این کلاس دسترسی به WorksheetCollection، نام‌های تعریف‌شده و چرخهٔ ذخیره/بارگذاری را فراهم می‌کند. این راهنما بارگذاری مقاوم در برابر خطا، سازماندهی برگه‌ها، پیکربندی چیدمان چاپ و کنترل‌های چیدمان ردیف/ستون/سلول را پوشش می‌دهد.


بارگذاری کتاب‌کارها با گزینه‌های تعمیر

یک مسیر فایل را به سازندهٔ Workbook بدهید تا یک فایل XLSX موجود را بارگذاری کنید. یک شیء LoadOptions را با مقداردهی TryRepairPackage و TryRepairXml به true فراهم کنید تا سعی در بازیابی فایل‌های دارای خرابی ساختاری جزئی داشته باشید. هنگامیکه فایل غیرقابل بازیابی باشد، یک WorkbookLoadException پرتاب می‌شود.

using Aspose.Cells_FOSS;

var options = new LoadOptions
{
    TryRepairPackage = true,
    TryRepairXml = true,
};

try
{
    var wb = new Workbook("data.xlsx", options);
    Console.WriteLine("Sheets: " + wb.Worksheets.Count);
    Console.WriteLine("Cell A1: " + wb.Worksheets[0].Cells["A1"].StringValue);
}
catch (WorkbookLoadException ex)
{
    Console.WriteLine("Unrecoverable: " + ex.Message);
}

افزودن و سازماندهی برگه‌ها

Workbook.Worksheets یک WorksheetCollection را برمی‌گرداند. برای افزودن یک برگهٔ جدید با نام، Add(name) را فراخوانی کنید؛ این متد شاخص برگهٔ جدید را برمی‌گرداند. می‌توانید به برگه‌ها از طریق شاخص صفر-پایه یا از طریق نام دسترسی پیدا کنید. WorksheetCollection.ActiveSheetName را تنظیم کنید تا تعیین کنید کدام تب هنگام باز شدن فایل فعال باشد.

using Aspose.Cells_FOSS;

var wb = new Workbook();

// Rename the default sheet
wb.Worksheets[0].Name = "Summary";

// Add sheets
var dataIdx = wb.Worksheets.Add("Data");
var archiveIdx = wb.Worksheets.Add("Archive");

// Set active sheet
wb.Worksheets.ActiveSheetName = "Data";

// Write to sheets by name
wb.Worksheets["Summary"].Cells["A1"].PutValue("Overview total");
wb.Worksheets["Data"].Cells["A1"].PutValue("Raw rows start here");

wb.Save("organised.xlsx");

// Verify
var loaded = new Workbook("organised.xlsx");
Console.WriteLine("Active: " + loaded.Worksheets.ActiveSheetName);
Console.WriteLine("Sheet count: " + loaded.Worksheets.Count);

پنهان کردن و نمایش برگه‌ها

مقدار Worksheet.VisibilityType را به VisibilityType.Hidden تنظیم کنید تا یک شیت را بدون حذف کردن مخفی کنید. شیت‌های مخفی در فایل XLSX نگهداری می‌شوند و می‌توانند با تنظیم VisibilityType.Visible قابل مشاهده شوند. رنگ برگه از طریق Worksheet.TabColor تنظیم می‌شود.

using Aspose.Cells_FOSS;

var wb = new Workbook();
wb.Worksheets[0].Name = "Visible";
var hiddenIdx = wb.Worksheets.Add("Internal");
var hiddenSheet = wb.Worksheets[hiddenIdx];

hiddenSheet.VisibilityType = VisibilityType.Hidden;
hiddenSheet.Cells["A1"].PutValue("Internal data");

wb.Worksheets["Visible"].TabColor = Color.FromArgb(255, 70, 130, 180);

wb.Save("hidden.xlsx");

پیکربندی تنظیمات صفحه

Worksheet.PageSetup تمام ویژگی‌های مرتبط با چاپ را نمایان می‌کند. از PageOrientationType برای تغییر بین حالت عمودی و افقی استفاده کنید. از PaperSizeType برای انتخاب اندازه کاغذ استفاده کنید. ناحیه چاپ را با PrintArea تعریف کنید، ردیف‌ها/ستون‌های تکرار را با PrintTitleRows/PrintTitleColumns تنظیم کنید، و شکست‌های صفحه دستی را با AddHorizontalPageBreak و AddVerticalPageBreak اضافه کنید.

using Aspose.Cells_FOSS;

var wb = new Workbook();
var ws = wb.Worksheets[0];

// Sample data
for (var r = 0; r < 60; r++)
    ws.Cells[r, 0].PutValue("Row " + (r + 1));

var ps = ws.PageSetup;
ps.Orientation = PageOrientationType.Landscape;
ps.PaperSize = PaperSizeType.PaperA4;
ps.LeftMarginInch = 0.5d;
ps.RightMarginInch = 0.5d;
ps.TopMarginInch = 0.75d;
ps.BottomMarginInch = 0.75d;
ps.PrintArea = "$A$1:$H$60";
ps.PrintTitleRows = "$1:$1";
ps.CenterHeader = "Sales Report";
ps.LeftFooter = "Confidential";
ps.RightFooter = "Page &P of &N";
ps.PrintGridlines = true;
ps.CenterHorizontally = true;
ps.AddHorizontalPageBreak(30);

wb.Save("paged.xlsx");

var loaded = new Workbook("paged.xlsx");
Console.WriteLine("Orientation: " + loaded.Worksheets[0].PageSetup.Orientation);
Console.WriteLine("Print area: " + loaded.Worksheets[0].PageSetup.PrintArea);

اندازه‌گیری ردیف و ستون

با استفاده از شاخص به Worksheet.Cells.Rows دسترسی پیدا کنید تا یک شیء Row دریافت کنید. Row.Height (بر حسب نقطه) را تنظیم کنید تا ارتفاع ردیف را کنترل کنید. Row.IsHidden را به true تنظیم کنید تا ردیف مخفی شود. با استفاده از شاخص به Worksheet.Cells.Columns دسترسی پیدا کنید تا یک شیء Column دریافت کنید. Column.Width (بر حسب واحدهای کاراکتر) و Column.IsHidden را تنظیم کنید.

using Aspose.Cells_FOSS;

var wb = new Workbook();
var ws = wb.Worksheets[0];

// Populate data
for (var r = 0; r < 5; r++)
    for (var c = 0; c < 4; c++)
        ws.Cells[r, c].PutValue($"R{r + 1}C{c + 1}");

// Row height and visibility
ws.Cells.Rows[0].Height = 28d;   // Header taller
ws.Cells.Rows[3].IsHidden = true; // Hide row 4

// Column width and visibility
ws.Cells.Columns[0].Width = 22d;
ws.Cells.Columns[3].IsHidden = true;

wb.Save("layout.xlsx");

var loaded = new Workbook("layout.xlsx");
Console.WriteLine("Row 0 height: " + loaded.Worksheets[0].Cells.Rows[0].Height);
Console.WriteLine("Col 0 width: " + loaded.Worksheets[0].Cells.Columns[0].Width);

ادغام سلول‌ها

با فراخوانی Worksheet.Cells.Merge(firstRow, firstColumn, totalRows, totalColumns) یک بلوک مستطیلی متصل را به یک سلول واحد ادغام کنید. سلول ادغام‌شده مقدار سلول بالا-چپ را به ارث می‌برد. از Worksheet.Cells.MergedCells برای خواندن همه نواحی ادغام‌شده در یک ورک‌بوک بارگذاری‌شده استفاده کنید.

using Aspose.Cells_FOSS;

var wb = new Workbook();
var ws = wb.Worksheets[0];

// Title spanning A1:D1
ws.Cells["A1"].PutValue("Quarterly Sales Report");
ws.Cells.Merge(0, 0, 1, 4);

// Section header spanning A3:D3
ws.Cells["A3"].PutValue("Region: North");
ws.Cells.Merge(2, 0, 1, 4);

// Column headers
ws.Cells["A4"].PutValue("Product"); ws.Cells["B4"].PutValue("Q1");
ws.Cells["C4"].PutValue("Q2");      ws.Cells["D4"].PutValue("Q3");

wb.Save("report.xlsx");

var loaded = new Workbook("report.xlsx");
Console.WriteLine("Merged regions: " + loaded.Worksheets[0].Cells.MergedCells.Count);

نکات و بهترین روش‌ها

  • از WorksheetCollection.ActiveSheetName استفاده کنید تا هنگام باز شدن فایل در Excel، برگهٔ صحیح انتخاب شود.
  • حاشیه‌های صفحه را بر حسب اینچ تنظیم کنید (LeftMarginInch، TopMarginInch) — این‌ها مقادیر عددی با نقطهٔ شناور هستند، نه اعداد صحیح.
  • پنهان‌کردن ردیف‌ها/ستون‌ها (IsHidden = true) داده‌های آن‌ها را حفظ می‌کند؛ حذف یک ردیف داده‌ها را به‌طور دائم حذف می‌نماید.
  • همیشه Workbook.Save() را یک‌بار در انتهای یک عملیات دسته‌ای صدا بزنید، نه پس از هر تغییر.
  • در برگه‌های داده، ادغام سلول‌ها را به‌ندرت انجام دهید — نواحی ادغام‌شده مانع مرتب‌سازی و فیلتر خودکار می‌شوند که نتوانند به‌درستی در سراسر ناحیهٔ ادغام‌شده کار کنند.

مسائل رایج

مشکلدلیلرفع
WorkbookLoadException هنگام بارگذاریخرابی ZIP یا XML در XLSXLoadOptions.TryRepairPackage = true و TryRepairXml = true را تنظیم کنید
Add(name) اندیس نادرست برمی‌گردانداستفاده از نام sheet به‌عنوان اندیسAdd() یک اندیس عدد صحیح برمی‌گرداند؛ از آن اندیس برای دسترسی به شیت جدید استفاده کنید
ارتفاع سطر ذخیره نمی‌شودارتفاع روی 0 یا مقدار منفی تنظیم شده استاز یک مقدار عددی دوبل مثبت مانند 28d استفاده کنید
سلول ادغام‌شده مقدار نادرستی نشان می‌دهدمقدار در سلولی غیر از بالا-چپ محدوده ادغام نوشته شده استقبل از فراخوانی Cells.Merge()، مقدار را در سلول بالا-چپ بنویسید
شکست صفحه ظاهر نمی‌شودAddHorizontalPageBreak پس از Save() فراخوانی شده استپیش از فراخوانیSave()، شکست صفحه‌ها را تنظیم کنید.

FAQ

حداکثر چند برگه می‌توانم اضافه کنم؟

قالب XLSX حداکثر ۱۰۲۴ شیت در هر کتاب کار را پشتیبانی می‌کند. محدودیت‌های عملی به حافظه موجود و حجم فایل بستگی دارد.

آیا می‌توانم یک شیت را بین کتاب‌های کار کپی کنم؟

سطح API فعلی روش CopyTo برای کپی شیت‌های بین کتاب‌های کار را ارائه نمی‌دهد. هر دو فایل را بارگذاری کنید و داده‌ها را سلول به سلول منتقل کنید.

چگونه می‌توانم ترتیب شیت‌ها را تغییر دهم؟

از دسترسی ایندکس WorksheetCollection استفاده کنید و شیت‌ها را برای تغییر ترتیب منطقی آن‌ها تغییر نام دهید. جابجایی مستقیم موقعیتی در سطح API فعلی موجود نیست.

واحدهای مورد استفاده PageSetup برای حاشیه‌ها چیست؟

تمام ویژگی‌های حاشیه (LeftMarginInch، TopMarginInch و غیره) بر حسب اینچ به عنوان مقادیر double هستند.

آیا Cells.Merge داده‌های سلول موجود را جایگزین می‌کند؟

مقدار سلول بالا-چپ حفظ می‌شود؛ مقادیر در سایر سلول‌های ادغام‌شده پاک می‌شوند.


API Reference خلاصه

کلاس / متدتوضیح
Workbookشیء ریشه — ایجاد، بارگیری، ذخیرهٔ دفترهای کار
Workbook.Worksheetsمقدار WorksheetCollection را برمی‌گرداند
Workbook.Save(path)دفتر کار را به XLSX ذخیره کنید
WorksheetCollection.Add(name)یک worksheet جدید را با نام اضافه کنید
WorksheetCollection.ActiveSheetNameزبانه فعال هنگام باز کردن فایل
Worksheet.VisibilityTypeVisibilityType.Hidden یا Visible
Worksheet.TabColorرنگ برگه (Color)
Worksheet.PageSetupتنظیمات چیدمان چاپ
PageSetup.OrientationPageOrientationType.Landscape یا Portrait
PageSetup.PaperSizePaperSizeType.PaperA4, و غیره.
PageSetup.AddHorizontalPageBreak(row)درج شکست صفحه افقی
Cells.Rows[index].Heightارتفاع سطر بر حسب نقطه
Cells.Rows[index].IsHiddenپنهان/نمایش سطر
Cells.Columns[index].Widthعرض ستون بر حسب واحدهای کاراکتر
Cells.Columns[index].IsHiddenپنهان/نمایش ستون
Cells.Merge(row, col, numRows, numCols)ادغام یک بلوک مستطیلی
Cells.MergedCellsفهرست نواحی ادغام‌شده در صفحه
LoadOptions.TryRepairPackageسعی در تعمیر ZIP هنگام بارگذاری
LoadOptions.TryRepairXmlسعی در تعمیر XML هنگام بارگذاری
WorkbookLoadExceptionدر زمانیکه فایل غیرقابل بازیابی باشد، پرتاب می‌شود

همچنین ببینید:

 فارسی