วิธีทำงานกับการตั้งค่า Core Workbook ใน .NET
Aspose.Cells FOSS สำหรับ .NET เปิดเผยการกำหนดค่าระดับ workbook ผ่าน Workbook.Settings (โลเคลและระบบวันที่), Workbook.DocumentProperties (เมตาดาต้าผู้เขียน), Workbook.LoadDiagnostics (รายงานการซ่อมแซม), และ SaveOptions (พฤติกรรมการบันทึก). ติดตั้งด้วยคำสั่ง dotnet add package เพียงคำสั่งเดียว.
คู่มือแบบขั้นตอนต่อขั้นตอน
ขั้นตอนที่ 1: ติดตั้งแพคเกจ
dotnet add package Aspose.Cells.FOSSขั้นตอนที่ 2: นำเข้า Namespace
using Aspose.Cells_FOSS;
using System.Globalization;ขั้นตอนที่ 3: กำหนดค่า WorkbookSettings
Workbook.Settings คืนค่าอ็อบเจกต์ประเภท WorkbookSettings. ตั้งค่า Date1904 = true สำหรับไฟล์ที่มาจาก macOS ที่ใช้ระบบวันที่ 1904. ตั้งค่า Culture เพื่อควบคุมภาษาของการแยกเลขและวันที่.
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);ขั้นตอนที่ 4: ตั้งค่าคุณสมบัติของเอกสาร
Workbook.DocumentProperties เปิดเผย Title, Subject, Author, Keywords, Comments, Category, Company และ Manager เป็นคุณสมบัติแบบสตริงโดยตรง.
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);ขั้นตอนที่ 5: ใช้ SaveOptions
Workbook.Save(path, SaveOptions) ยอมรับอ็อบเจกต์ประเภท SaveOptions เพื่อปรับแต่งผลลัพธ์. คุณสมบัติหลัก: UseSharedStrings (ลดขนาดไฟล์สำหรับแผ่นงานที่มีสตริงซ้ำ), ValidateBeforeSave (ทำการตรวจสอบความถูกต้องก่อนการเขียน), และ CompactStyles (ลบสไตล์ที่ไม่ได้ใช้).
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.");ขั้นตอนที่ 6: อ่าน LoadDiagnostics หลังการซ่อมแซม
หลังจากโหลดด้วย TryRepairPackage = true, ตรวจสอบ Workbook.LoadDiagnostics เพื่อดูว่ามีการซ่อมแซมใด ๆ ถูกนำไปใช้หรือไม่.
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}");ปัญหาทั่วไปและวิธีแก้ไข
WorkbookSaveException when ValidateBeforeSave = true. สมุดงานมีความไม่สอดคล้องเชิงโครงสร้าง. ปิดการทำงาน ValidateBeforeSave ชั่วคราวเพื่อบันทึกและตรวจสอบไฟล์, จากนั้นแก้ไขเนื้อหาที่มีปัญหา.
คุณสมบัติของเอกสารไม่ปรากฏในแผงข้อมูลไฟล์ของ Excel. ตรวจสอบให้แน่ใจว่าคุณกำลังตั้งค่าคุณสมบัติบน Workbook.DocumentProperties, ไม่ใช่ Workbook.Properties. ส่วนหลังเก็บแฟล็กการแสดงผล, ไม่ใช่สตริงเมตาดาต้า.
Date1904 = true ทำให้ค่าของวันที่เลื่อนตำแหน่ง. Date1904 เปลี่ยน epoch ที่ใช้สำหรับหมายเลขลำดับวันที่. ให้ตั้งค่าเป็น true สำหรับไฟล์ที่มาจาก macOS Excel โดยเปิดใช้งานระบบวันที่ 1904; การผสมผสานระบบทำให้เกิดข้อผิดพลาดที่เบี่ยงเบน 1462 วัน.
คำถามที่พบบ่อย
ความแตกต่างระหว่าง WorkbookSettings และ WorkbookProperties คืออะไร?
WorkbookSettings (ผ่าน Workbook.Settings) มีค่า configuration เช่น Date1904 และ Culture. WorkbookProperties (ผ่าน Workbook.Properties) มีแฟล็กการแสดงผล OOXML เช่น ShowObjects. สตริงเมตาดาต้าเอกสาร (Title, Author, เป็นต้น) อยู่ใน Workbook.DocumentProperties.
เคย CompactStyles ลบสไตล์ที่ฉันต้องการหรือไม่?
เลขที่ CompactStyles จะลบสไตล์ที่ไม่ได้อ้างอิงโดยเซลล์หรือกฎรูปแบบใดในสมุดงาน.
ฉันสามารถอ่าน LoadDiagnostics ได้แม้ไม่มีการพยายามซ่อมแซมหรือไม่?
ใช่. คอลเลกชัน Issues จะว่างเปล่าและทั้ง HasRepairs และ HasDataLossRisk จะคืนค่า false.