Cách làm việc với Core Workbook Settings trong .NET

Cách làm việc với Core Workbook Settings trong .NET

Aspose.Cells FOSS cho .NET cung cấp cấu hình ở mức sổ làm việc thông qua Workbook.Settings (địa phương và hệ thống ngày), Workbook.DocumentProperties (siêu dữ liệu tác giả), Workbook.LoadDiagnostics (báo cáo sửa chữa), và SaveOptions (hành vi lưu). Cài đặt bằng một lệnh dotnet add package duy nhất.

Hướng dẫn từng bước

Bước 1: Cài đặt gói

dotnet add package Aspose.Cells.FOSS

Bước 2: Nhập không gian tên

using Aspose.Cells_FOSS;
using System.Globalization;

Bước 3: Cấu hình WorkbookSettings

Workbook.Settings trả về một đối tượng WorkbookSettings. Đặt Date1904 = true cho các tệp gốc macOS sử dụng hệ thống ngày 1904. Đặt Culture để kiểm soát ngôn ngữ định dạng số và ngày.

using Aspose.Cells_FOSS;
using System.Globalization;

var wb = new Workbook();
wb.Settings.Date1904 = false;
wb.Settings.Culture = new CultureInfo("en-US");
wb.Worksheets[0].Cells["A1"].PutValue("Settings configured");
wb.Save("settings.xlsx");

var loaded = new Workbook("settings.xlsx");
Console.WriteLine("Date1904: " + loaded.Settings.Date1904);

Bước 4: Đặt thuộc tính tài liệu

Workbook.DocumentProperties phô bày Title, Subject, Author, Keywords, Comments, Category, Company và Manager như các thuộc tính chuỗi trực tiếp.

using Aspose.Cells_FOSS;

var wb = new Workbook();
wb.DocumentProperties.Title = "Quarterly Report";
wb.DocumentProperties.Author = "Reporting Team";
wb.DocumentProperties.Company = "Contoso Ltd";
wb.DocumentProperties.Keywords = "quarterly, sales, 2026";
wb.Save("properties.xlsx");

var loaded = new Workbook("properties.xlsx");
Console.WriteLine("Title: " + loaded.DocumentProperties.Title);
Console.WriteLine("Author: " + loaded.DocumentProperties.Author);

Bước 5: Sử dụng SaveOptions

Workbook.Save(path, SaveOptions) chấp nhận một đối tượng SaveOptions để tùy chỉnh đầu ra. Các thuộc tính chính: UseSharedStrings (giảm kích thước tệp cho các trang tính có chuỗi lặp lại), ValidateBeforeSave (thực hiện xác thực trước khi ghi), và CompactStyles (xóa các kiểu không sử dụng).

using Aspose.Cells_FOSS;

var wb = new Workbook();
var ws = wb.Worksheets[0];
for (var i = 0; i < 50; i++)
    ws.Cells[i, 0].PutValue("Repeated text");

var opts = new SaveOptions
{
    UseSharedStrings = true,
    ValidateBeforeSave = true,
    CompactStyles = true,
};

wb.Save("compact.xlsx", opts);
Console.WriteLine("Saved with SaveOptions.");

Bước 6: Đọc LoadDiagnostics sau khi sửa chữa

Sau khi tải bằng TryRepairPackage = true, kiểm tra Workbook.LoadDiagnostics để xem có bất kỳ sửa chữa nào đã được áp dụng hay không.

using Aspose.Cells_FOSS;

var opts = new LoadOptions { TryRepairPackage = true, TryRepairXml = true };
var wb = new Workbook("file.xlsx", opts);
var diag = wb.LoadDiagnostics;

Console.WriteLine("HasRepairs: " + diag.HasRepairs);
Console.WriteLine("HasDataLossRisk: " + diag.HasDataLossRisk);
foreach (var entry in diag.Issues)
    Console.WriteLine($"  [{entry.Severity}] {entry.Code}: {entry.Message}");

Các vấn đề thường gặp và cách khắc phục

WorkbookSaveException when ValidateBeforeSave = true. Sổ làm việc chứa một sự không nhất quán cấu trúc. Vô hiệu hoá ValidateBeforeSave tạm thời để lưu và kiểm tra tệp, sau đó sửa nội dung gây vấn đề.

Thuộc tính tài liệu không hiển thị trong bảng điều khiển Thông tin Tệp của Excel. Đảm bảo bạn đang đặt thuộc tính trên Workbook.DocumentProperties, không phải Workbook.Properties. Cái sau giữ các cờ hiển thị, không phải chuỗi siêu dữ liệu.

Date1904 = true gây ra sự dịch chuyển giá trị ngày. Date1904 thay đổi mốc thời gian được sử dụng cho các số sê-ri ngày. Chỉ đặt nó thành true đối với các tệp được tạo từ macOS Excel với hệ thống ngày 1904 được bật; việc trộn lẫn các hệ thống gây ra lỗi lệch 1462 ngày.

Câu hỏi thường gặp

Sự khác nhau giữa WorkbookSettings và WorkbookProperties là gì?

WorkbookSettings (qua Workbook.Settings) chứa các giá trị cấu hình như Date1904 và Culture. WorkbookProperties (qua Workbook.Properties) chứa các cờ hiển thị OOXML như ShowObjects. Các chuỗi siêu dữ liệu tài liệu (Tiêu đề, Tác giả, v.v.) nằm trong Workbook.DocumentProperties.

Liệu CompactStyles có bao giờ xóa các kiểu tôi cần không?

Không. CompactStyles chỉ xóa các kiểu không được tham chiếu bởi bất kỳ ô hay quy tắc định dạng nào trong workbook.

Tôi có thể đọc LoadDiagnostics ngay cả khi không có nỗ lực sửa chữa nào không?

Có. Bộ sưu tập Issues sẽ trống và cả HasRepairs và HasDataLossRisk sẽ trả về false.

Xem thêm

 Tiếng Việt