کار با مدیریت صفحهگسترده
کار با مدیریت صفحات گسترده
کلاس 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 در XLSX | LoadOptions.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.VisibilityType | VisibilityType.Hidden یا Visible |
Worksheet.TabColor | رنگ برگه (Color) |
Worksheet.PageSetup | تنظیمات چیدمان چاپ |
PageSetup.Orientation | PageOrientationType.Landscape یا Portrait |
PageSetup.PaperSize | PaperSizeType.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 | در زمانیکه فایل غیرقابل بازیابی باشد، پرتاب میشود |