Đọc và ghi tệp Excel bằng C#, không cần cài Excel
WorkbookEditor đọc và ghi tệp XLSX từ .NET mà không cần cài Excel. Bài này nói về giá trị ô, tệp tải lên chưa biết cấu trúc, công thức và định dạng, cùng giới hạn của phần định dạng.
byte[] xlsx = WorkbookEditor.Create("Sales", new object?[][]
{
new object?[] { "Region", "Total" },
new object?[] { "North", 1200 },
new object?[] { "South", 950 },
});
string before = WorkbookEditor.ReadCell(xlsx, "Sales", "B2");
byte[] updated = WorkbookEditor.SetCell(xlsx, "Sales", "B2", 1500);
string after = WorkbookEditor.ReadCell(updated, "Sales", "B2");Số vẫn là số
WorkbookEditorxử lý XLSX. Không cần Excel.- Giá trị ô có kiểu
object?. Số được ghi là số và chuỗi được ghi là chuỗi, nên một cột tổng cộng có thể cộng được trong Excel. ReadCelltrả về giá trị của ô dưới dạng văn bản, không phải cách Excel hiển thị ô.- Ô chứa
1200với định dạng số#,##0.00được đọc lại là1200, không phải1,200.00.
Đọc tệp bạn được giao
- Bạn không cần biết trước cấu trúc của workbook.
SheetNamescho biết trong tệp có những sheet nào, cònReadSheettrả về vùng đã dùng dưới dạng các dòng chuỗi.- Hai hàm này đủ để duyệt một tệp tải lên mà bạn chưa từng thấy.
Công thức
- Ô chứa
XlsxFormulađược ghi là công thức, không phải văn bản bắt đầu bằng=. - Hãy ghi không có dấu
=ở đầu, nhưXlsxFormula.From("SUM(Q1!B2:B4)"). Trình ghi sẽ tự thêm=. - Đọc lại qua DocToolkit, công thức cho ra giá trị đã tính.
- Trình đọc chỉ đọc giá trị đã lưu sẵn sẽ thấy một ô trống, cho đến khi Excel mở và lưu tệp.
Cho sheet trông như một báo cáo
XlsxFormat.Reportlà bộ cài đặt sẵn thường dùng: tiêu đề in đậm, cố định hàng tiêu đề và tự khớp độ rộng cột.Formatlà một lời gọi riêng nhận workbook và tên sheet, nên dùng được trên sheet đã có.- Tự khớp độ rộng cột chỉnh cột theo nội dung. Với giá trị ngắn, cột sẽ hẹp hơn mặc định 8,43 ký tự của Excel.
Những điều nó không làm
- Bộ định dạng là một tập đóng: sáu điều kiện quy tắc, năm kiểu kiểm tra dữ liệu và bốn kiểu tô nổi. Cần phông chữ, đường viền hay thang màu tùy ý thì dùng thẳng ClosedXML.
WithTablevàWithAutoFilterkhông được áp lên các vùng chồng nhau. Dùng cả hai trên cùng các ô sẽ némDocumentConversionException.WithTablekhông làmAppendRowscập nhật bảng. Dòng mới nằm cạnh bảng chứ không nằm trong bảng.
Cài đặt
dotnet add package Ank.DocToolkitĐọc trong tài liệu DocToolkitNuGetGitHub