Робота з управлінням електронними таблицями

Робота з управлінням електронними таблицями

Робота з управлінням електронними таблицями

Клас 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) повертає неправильний індексВикористання назви листа як індексуAdd() повертає цілий індекс; використайте цей індекс для доступу до нового листа
Висота рядка не зберігаєтьсяВисота встановлена в 0 або від’ємне значенняВикористайте додатне double-значення, наприклад 28d
Об’єднана клітинка показує неправильне значенняЗначення записано в клітинку, що не є верхньою лівою в діапазоні об’єднанняЗапишіть значення у верхню ліву клітинку перед викликом Cells.Merge()
Розрив сторінки не відображаєтьсяAddHorizontalPageBreak викликано після Save()Встановити розриви сторінок перед викликом Save()

FAQ

Скільки аркушів я можу додати?

Формат XLSX підтримує до 1024 листів у робочій книзі. Практичні обмеження залежать від доступної пам’яті та розміру файлу.

Чи можу я скопіювати лист між робочими книгами?

Поточна поверхня API не надає метод CopyTo для копіювання листів між робочими книгами. Завантажте обидва файли та переносьте дані клітинка за клітинкою.

Як переставити листи?

Використовуйте індексний доступ WorksheetCollection та перейменовуйте листи, щоб змінити їх логічний порядок. Пряме переміщення за позицією відсутнє у поточній поверхні API.

Які одиниці вимірювання використовує PageSetup для полів?

Усі властивості полів (LeftMarginInch, TopMarginInch тощо) вимірюються в дюймах як значення double.

Чи Cells.Merge замінює існуючі дані комірки?

Значення верхньої лівої клітини зберігається; значення в інших об’єднаних клітинках стираються.


API Reference Огляд

Клас / МетодОпис
WorkbookКореневий об’єкт — створювати, завантажувати, зберігати робочі книги
Workbook.WorksheetsПовертає WorksheetCollection
Workbook.Save(path)Зберегти робочу книгу у форматі XLSX
WorksheetCollection.Add(name)Додати новий лист за назвою
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Викидається, коли файл не підлягає відновленню

Дивіться також

 Українська