Cara Memuat Spreadsheet di .NET
Aspose.Cells FOSS for .NET memungkinkan Anda membuka spreadsheet XLSX yang ada dengan satu pemanggilan konstruktor dan menyediakan jalur pemuatan yang toleran terhadap kesalahan untuk file yang memiliki korupsi struktural minor. Instal perpustakaan dari NuGet dengan dotnet add package Aspose.Cells_FOSS.
Panduan Langkah-demi-Langkah
Langkah 1: Instal Paket
dotnet add package Aspose.Cells_FOSSVerifikasi paket ada:
dotnet list package | grep Aspose.Cells_FOSSLangkah 2: Impor Namespace
Tambahkan direktif ini di bagian atas file C# Anda:
using Aspose.Cells_FOSS;Langkah 3: Muat File XLSX
Berikan jalur file ke konstruktor Workbook. Perpustakaan membaca file XLSX dan mengisi objek workbook 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 Opsi Perbaikan Toleransi Kesalahan
Untuk file yang mungkin mengalami kerusakan ZIP atau XML, sediakan objek LoadOptions dengan TryRepairPackage dan TryRepairXml diatur ke true. Bungkus panggilan dalam try/catch untuk WorkbookLoadException jika file 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: Periksa Diagnostik Beban
Setelah memuat, periksa Workbook.LoadDiagnostics untuk melihat apakah perpustakaan menerapkan perbaikan apa pun. HasRepairs adalah true jika ada perbaikan yang diterapkan; HasDataLossRisk adalah true jika data mungkin telah dibuang. Iterasikan Issues untuk mengakses catatan DiagnosticEntry individual.
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 Lembar Kerja
Setelah memuat, akses lembar kerja berdasarkan 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);Masalah Umum dan Solusi
WorkbookLoadException dilemparkan bahkan dengan opsi perbaikan diaktifkan.
Ini berarti struktur ZIP file terlalu rusak untuk algoritma perbaikan memulihkannya. Verifikasi bahwa file adalah arsip ZIP yang valid (mis. coba unzip -t file.xlsx). Jika file benar‑benar rusak, tidak dapat dibuka oleh perpustakaan mana pun.
Buku kerja yang dimuat memiliki lembar kerja lebih sedikit dari yang diharapkan.
Operasi perbaikan mungkin telah menghapus lembar kerja yang merujuk ke bagian yang hilang. Periksa LoadDiagnostics.Issues untuk entri dengan DataLossRisk = true dan beri tahu pengguna.
Nilai sel kosong setelah dimuat.
Pastikan Anda mengakses indeks atau nama lembar kerja yang benar. Gunakan wb.Worksheets.Count untuk mengonfirmasi jumlah lembar yang diharapkan. Juga periksa bahwa file XLSX tidak dilindungi kata sandi (file yang dilindungi kata sandi saat ini tidak didukung).
Workbook konstruktor menggantung pada file besar.
Konstruktor bersifat sinkron dan memuat seluruh file ke memori. Untuk file yang sangat besar, jalankan pemuatan pada thread latar belakang agar UI tetap responsif.
DiagnosticEntry.Severity menunjukkan Error tetapi HasRepairs adalah false.HasRepairs mencerminkan apakah perbaikan berhasil diterapkan, bukan apakah kesalahan terdeteksi. Entri dengan tingkat keparahan Error-severity dengan RepairApplied = false berarti masalah terdeteksi tetapi tidak dapat diperbaiki — perlakukan ini sebagai peringatan integritas data yang mungkin.
Pertanyaan yang Sering Diajukan
Apakah saya dapat memuat file XLSX dari Stream alih-alih jalur file?
Ya. Konstruktor Workbook memiliki overload yang menerima objek Stream. Berikan stream Anda bersama dengan instance LoadOptions jika diperlukan pemuatan yang toleran terhadap kesalahan.
Apakah perpustakaan mendukung memuat file XLSX yang dilindungi kata sandi?
File yang dilindungi kata sandi tidak termasuk dalam permukaan API saat ini. Mencoba memuatnya akan menghasilkan WorkbookLoadException.
Bagaimana cara memeriksa lembar mana yang aktif dalam workbook yang dimuat?
Baca Workbook.Worksheets.ActiveSheetName untuk mendapatkan nama lembar yang terakhir aktif saat file disimpan.
Bisakah saya memuat beberapa file XLSX secara bersamaan?
Ya. Setiap instance Workbook bersifat independen. Anda dapat menginstansiasi beberapa objek Workbook pada thread terpisah tanpa status bersama.
Apa yang terjadi jika sel formula dimuat dan hasil cache tidak ada?
Cell.StringValue mengembalikan string kosong. Cell.Formula masih mengembalikan string formula. Nilai yang di‑cache hanya diisi ketika Excel (atau aplikasi yang kompatibel) membuka dan menyimpan file.