Bekerja dengan Manajemen Spreadsheet
Bekerja dengan Manajemen Spreadsheet
Pengelolaan Workbook class adalah objek root untuk semua operasi spreadsheet di Aspose.Cells FOSS for .NET. Ini memberikan akses ke WorksheetCollection, nama yang didefinisikan, dan siklus hidup menyimpan/memungut. Panduan ini mencakup pemadatan toleransi kesalahan, organisasi lembar kerja, konfigurasi tata letak cetak, serta kontrol tata ruang baris/kolom/sel.
Mengisi buku kerja dengan opsi perbaikan
Pasang jalur file ke Workbook Konstruktor untuk memuat file XLSX yang ada. Menyediakan a LoadOptions objek dengan TryRepairPackage dan (b) TryRepairXml ditetapkan pada true untuk mencoba pemulihan file dengan kerusakan struktural kecil. A WorkbookLoadException akan dibuang ketika file tidak dapat dipulihkan.
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);
}Menambahkan dan Mengorganisir Lembar Kerja
Workbook.Worksheets mengembalikan a WorksheetCollection.- Panggil. Add(name) untuk menambahkan lembar kerja baru dengan nama; metode mengembalikan indeks lembaran baru. Akses lembara kerja dengan indeks berbasis nol atau dengan name. Set WorksheetCollection.ActiveSheetName untuk mengontrol tab mana yang aktif saat file dibuka.
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);Menyembunyikan dan Menampilkan Lembar Kerja
Set (set) Worksheet.VisibilityType ke VisibilityType.Hidden untuk menyembunyikan lembar tanpa menghapusnya. Lembar tersembunyi disimpan dalam file XLSX dan dapat dibuat terlihat dengan mengatur VisibilityType.Visible.Warna tab diatur melalui: 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");Mengkonfigurasi Setup Halaman
Worksheet.PageSetup mengungkapkan semua sifat yang berhubungan dengan cetakan. PageOrientationType untuk beralih antara potret dan lanskap. Gunakan PaperSizeType untuk memilih ukuran kertas. Tentukan area cetak dengan PrintArea, mengatur baris/kolom berulang dengan PrintTitleRows/PrintTitleColumns, dan menambahkan manual halaman istirahat dengan AddHorizontalPageBreak dan (b) 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);Ukuran baris dan kolom
Akses Worksheet.Cells.Rows dengan indeks untuk mendapatkan a Row objek. set Row.Height (dalam titik) untuk mengontrol tinggi baris. Row.IsHidden ke true Untuk menyembunyikan baris. akses Worksheet.Cells.Columns dengan indeks untuk mendapatkan a Column objek. set Column.Width (dalam satuan karakter) dan 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);Sel yang Gabung
Panggil. Worksheet.Cells.Merge(firstRow, firstColumn, totalRows, totalColumns) untuk menggabungkan blok persegi panjang yang bersatu ke dalam satu sel. Sel yang digabungkan mewarisi nilai dari sel kiri atas. Gunakan Worksheet.Cells.MergedCells untuk membaca kembali semua wilayah yang digabungkan dalam buku kerja yang dimuat.
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);Tips dan Praktik Terbaik
- Penggunaan
WorksheetCollection.ActiveSheetNameuntuk memastikan tab yang benar dipilih saat file dibuka di Excel. - Tetapkan margin halaman dalam inci (
LeftMarginInch,TopMarginInch) ini adalah nilai-nilai titik mengambang, bukan bilangan bulat. - Menggunakan baris/kolom yang tersembunyi (
IsHidden = true) menyimpan data mereka; menghapus baris akan menghapus data secara permanen. - Selalu menelepon.
Workbook.Save()sekali pada akhir operasi batch daripada setelah setiap perubahan. - Merger sel dengan hemat dalam lembar data merged wilayah mencegah pemisahan dan otomatis-filter dari bekerja dengan benar di seluruh area yang bergabung.
Masalah Umum
| Isu | Penyebabnya | Perbaiki |
|---|---|---|
WorkbookLoadException pada beban | ZIP atau XML yang rusak di XLSX | Set (set) LoadOptions.TryRepairPackage = true dan (b) TryRepairXml = true |
Add(name) mengembalikan indeks yang salah | Menggunakan nama lembar sebagai indeks | Add() mengembalikan indeks int; gunakan indeks itu untuk mengakses lembar baru |
| Tinggi baris tidak bertahan | Tinggi ditetapkan menjadi 0 atau nilai negatif | Gunakan nilai ganda positif seperti: 28d |
| Sel yang digabungkan menunjukkan nilai salah | Nilai yang ditulis ke sel di bagian kiri atas dari kisaran penggabungan | Tuliskan nilai ke sel kiri atas sebelum menelepon Cells.Merge() |
| Tidak muncul bagian halaman | AddHorizontalPageBreak disebut setelah Save() | Tetapkan istirahat halaman sebelum menelepon Save() |
FAQ
Berapa banyak lembar kerja yang bisa saya tambahkan?
Format XLSX mendukung hingga 1024 lembar per buku kerja. Batas praktis tergantung pada memori yang tersedia dan ukuran file.
Bisakah saya menyalin lembar kerja di antara buku kerja?
Permukaan API saat ini tidak mengekspos sebuah CopyTo Cara untuk salinan lembar silang buku kerja. Mengunggah kedua file dan mentransfer data sel demi sel.
Bagaimana saya mengatur ulang lembar kerja?
Penggunaan WorksheetCollection akses indeks dan nama ulang lembar untuk mengubah urutan logis mereka. Pindah posisi langsung tidak ada di permukaan API saat ini.
Unit apa yang dilakukan? PageSetup digunakan untuk margin?
Semua properti margin (LeftMarginInch, TopMarginInch, dll) dalam inci sebagai double nilai.
Apakah Cells.Merge mengganti data sel yang ada?
Nilai sel di bagian atas kiri dipertahankan; nilai dalam sel yang disatukan lainnya dibersihkan.
Ringkasan Referensi API
| Kelas / Metode | Deskripsi |
|---|---|
Workbook | Obyek akar membuat, memuat, menyimpan buku kerja |
Workbook.Worksheets | Mengembalikan WorksheetCollection |
Workbook.Save(path) | Persist workbook ke XLSX |
WorksheetCollection.Add(name) | Menambahkan lembar kerja baru dengan nama |
WorksheetCollection.ActiveSheetName | Tab aktif pada file terbuka |
Worksheet.VisibilityType | VisibilityType.Hidden atau: Visible |
Worksheet.TabColor | Warna tab (Color) |
Worksheet.PageSetup | Pengaturan tata letak cetak |
PageSetup.Orientation | PageOrientationType.Landscape atau: Portrait |
PageSetup.PaperSize | PaperSizeType.PaperA4, dll. |
PageSetup.AddHorizontalPageBreak(row) | Masukkan halaman yang rusak secara horizontal |
Cells.Rows[index].Height | Tinggi baris dalam poin |
Cells.Rows[index].IsHidden | Baris menyembunyikan/menampilkan |
Cells.Columns[index].Width | Lebar kolom dalam satuan karakter |
Cells.Columns[index].IsHidden | Kolom menyembunyikan/menampilkan |
Cells.Merge(row, col, numRows, numCols) | Gabungkan blok persegi panjang |
Cells.MergedCells | Daftar wilayah yang bergabung dalam lembar ini |
LoadOptions.TryRepairPackage | Mencoba perbaikan ZIP saat dimuat |
LoadOptions.TryRepairXml | Mencoba perbaikan XML saat dimuat |
WorkbookLoadException | Dibuang saat file tidak dapat dipulihkan |