Cara Memuatkan Spreadsheet dalam .NET
Aspose.Cells FOSS untuk .NET membolehkan anda membuka hamparan XLSX sedia ada dengan satu panggilan konstruktor dan menyediakan laluan pemuatan yang toleran terhadap kesilapan untuk fail yang mempunyai kerosakan struktur kecil. Pasang perpustakaan dari NuGet dengan dotnet add package Aspose.Cells_FOSS.
Panduan Langkah demi Langkah
Langkah 1: Pasang Pakej
dotnet add package Aspose.Cells_FOSSSahkan pakej ada:
dotnet list package | grep Aspose.Cells_FOSSLangkah 2: Import Nama Ruang
Tambah arahan ini di bahagian atas fail C# anda:
using Aspose.Cells_FOSS;Langkah 3: Muat Fail XLSX
Berikan laluan fail kepada konstruktor Workbook. Perpustakaan membaca fail XLSX dan mengisi objek buku kerja dalam memori.
using Aspose.Cells_FOSS;
var wb = new Workbook("data.xlsx");
Console.WriteLine("Loaded " + wb.Worksheets.Count + " sheet(s)");
Console.WriteLine("First sheet: " + wb.Worksheets[0].Name);
Console.WriteLine("A1 value: " + wb.Worksheets[0].Cells["A1"].StringValue);Langkah 4: Muat dengan Pilihan Pembaikan Toleran Kesalahan
Untuk fail yang mungkin mempunyai kerosakan ZIP atau XML, sediakan objek LoadOptions dengan TryRepairPackage dan TryRepairXml ditetapkan kepada true. Balut panggilan dalam try/catch untuk WorkbookLoadException sekiranya fail tidak dapat dipulihkan.
using Aspose.Cells_FOSS;
var opts = new LoadOptions
{
TryRepairPackage = true,
TryRepairXml = true,
};
try
{
var wb = new Workbook("possibly-corrupt.xlsx", opts);
Console.WriteLine("Loaded successfully");
}
catch (WorkbookLoadException ex)
{
Console.WriteLine("Unrecoverable file: " + ex.Message);
}Langkah 5: Semak Diagnostik Muatan
Selepas memuat, periksa Workbook.LoadDiagnostics untuk melihat sama ada perpustakaan telah melakukan sebarang pembaikan. HasRepairs adalah true jika sebarang pembaikan telah dilakukan; HasDataLossRisk adalah true jika data mungkin telah dibuang. Ulangi Issues untuk mengakses rekod DiagnosticEntry individu.
using Aspose.Cells_FOSS;
var opts = new LoadOptions { TryRepairPackage = true, TryRepairXml = true };
var wb = new Workbook("file.xlsx", opts);
var diag = wb.LoadDiagnostics;
if (diag.HasRepairs)
{
Console.WriteLine("Repairs were applied. Data loss risk: " + diag.HasDataLossRisk);
foreach (var entry in diag.Issues)
Console.WriteLine($" [{entry.Severity}] {entry.Code}: {entry.Message}");
}
else
{
Console.WriteLine("File loaded cleanly — no repairs.");
}Langkah 6: Akses Data Lembaran Kerja
Selepas memuatkan, akses helaian kerja mengikut indeks atau nama, dan baca nilai sel menggunakan Cell.StringValue atau Cell.Value.
using Aspose.Cells_FOSS;
var wb = new Workbook("data.xlsx");
// By index
var sheet = wb.Worksheets[0];
Console.WriteLine("Sheet: " + sheet.Name);
Console.WriteLine("A1: " + sheet.Cells["A1"].StringValue);
// By name
var named = wb.Worksheets["Report"];
if (named != null)
Console.WriteLine("Report!B2: " + named.Cells["B2"].StringValue);Isu Umum dan Penyelesaian
WorkbookLoadException dilemparkan walaupun pilihan pembaikan diaktifkan.
Ini bermakna struktur ZIP fail terlalu rosak untuk algoritma pembaikan memulihkannya. Sahkan bahawa fail tersebut merupakan arkib ZIP yang sah (contohnya cuba unzip -t file.xlsx). Jika fail itu sepenuhnya rosak, ia tidak dapat dibuka oleh mana-mana perpustakaan.
Buku kerja yang dimuatkan mempunyai lembaran yang lebih sedikit daripada yang dijangka.
Operasi pembaikan mungkin telah membuang lembar kerja yang merujuk bahagian yang hilang. Semak LoadDiagnostics.Issues untuk entri dengan DataLossRisk = true dan maklumkan pengguna.
Nilai sel kosong selepas dimuatkan.
Pastikan anda mengakses indeks atau nama lembar kerja yang betul. Gunakan wb.Worksheets.Count untuk mengesahkan bilangan lembar yang dijangka. Juga periksa bahawa fail XLSX tidak dilindungi kata laluan (fail yang dilindungi kata laluan tidak disokong pada masa ini).
Workbook konstruktor tergantung pada fail besar.
Konstruktor adalah sinkron dan memuatkan seluruh fail ke dalam memori. Untuk fail yang sangat besar, jalankan pemuatan pada thread latar belakang untuk mengekalkan UI responsif.
DiagnosticEntry.Severity menunjukkan Error tetapi HasRepairs adalah false.
HasRepairs mencerminkan sama ada pembaikan telah berjaya dilaksanakan, bukan sama ada ralat dikesan. Satu entri keparahan Error dengan RepairApplied = false bermakna isu tersebut dikesan tetapi tidak dapat dibaiki — anggap ini sebagai amaran integriti data yang mungkin.
Soalan Lazim
Bolehkah saya memuatkan fail XLSX dari Stream dan bukannya laluan fail?
Ya. Konstruktor Workbook mempunyai overload yang menerima objek Stream. Hantar aliran anda bersama contoh LoadOptions jika pemuatan tahan‑ralat diperlukan.
Adakah perpustakaan menyokong memuatkan fail XLSX yang dilindungi kata laluan?
Fail yang dilindungi kata laluan tidak berada dalam permukaan API semasa. Mencuba memuatkan satu akan menghasilkan WorkbookLoadException.
Bagaimana saya memeriksa lembaran mana yang aktif dalam buku kerja yang dimuatkan?
Baca Workbook.Worksheets.ActiveSheetName untuk mendapatkan nama helaian yang terakhir aktif ketika fail disimpan.
Bolehkah saya memuatkan beberapa fail XLSX secara serentak?
Ya. Setiap contoh Workbook adalah bebas. Anda boleh membuat beberapa objek Workbook pada thread berasingan tanpa keadaan yang dikongsi.
Apa yang berlaku jika sel formula dimuatkan dan hasil cache tidak ada?
Cell.StringValue mengembalikan rentetan kosong. Cell.Formula masih mengembalikan rentetan formula. Nilai yang disimpan dalam cache hanya diisi apabila Excel (atau aplikasi serasi) membuka dan menyimpan fail.