วิธีทำงานกับการตั้งค่า Core Workbook ใน .NET
Aspose.Cells FOSS for .NET เปิดเผยการกำหนดค่าระดับเวิร์กบุ๊กผ่าน Workbook.Settings (การตั้งค่าภาษาและระบบวันที่), Workbook.DocumentProperties (เมตาดาต้าผู้เขียน), Workbook.LoadDiagnostics (รายงานการซ่อมแซม), และ SaveOptions (พฤติกรรมการบันทึก). ติดตั้งด้วย dotnet add package Aspose.Cells_FOSS.
คู่มือแบบขั้นตอนต่อขั้นตอน
ขั้นตอนที่ 1: ติดตั้งแพ็กเกจ
dotnet add package Aspose.Cells_FOSSขั้นตอนที่ 2: นำเข้าเนมสเปซ
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 เมื่อ ValidateBeforeSave = true.
สมุดงานมีความไม่สอดคล้องเชิงโครงสร้าง. ปิดการทำงานของ ValidateBeforeSave ชั่วคราวเพื่อบันทึกและตรวจสอบไฟล์, จากนั้นแก้ไขเนื้อหาที่เป็นปัญหา.
คุณสมบัติของเอกสารไม่ปรากฏในแผงข้อมูลไฟล์ของ Excel.
ตรวจสอบให้แน่ใจว่าคุณกำลังตั้งค่าคุณสมบัติบน Workbook.DocumentProperties ไม่ใช่ Workbook.Properties. ตัวหลังเก็บค่าสถานะการแสดงผล ไม่ใช่สตริงเมตาดาต้า.
Date1904 = true ทำให้ค่าของวันที่เลื่อนตำแหน่ง
Date1904 เปลี่ยน epoch ที่ใช้สำหรับหมายเลขลำดับวันที่ ตั้งค่าเป็น true เท่านั้นสำหรับไฟล์ที่มาจาก macOS Excel ที่เปิดใช้งานระบบวันที่ 1904; การผสมระบบทำให้เกิดข้อผิดพลาดที่ต่างกัน 1462 วัน.
คำถามที่พบบ่อย
ความแตกต่างระหว่าง WorkbookSettings และ WorkbookProperties คืออะไร?
WorkbookSettings (ผ่าน Workbook.Settings) เก็บค่าการกำหนดค่าเช่น Date1904 และ Culture. WorkbookProperties (ผ่าน Workbook.Properties) เก็บแฟล็กการแสดงผล OOXML เช่น ShowObjects. สตริงเมตาดาต้าเอกสาร (Title, Author, ฯลฯ) อยู่ใน Workbook.DocumentProperties.
CompactStyles เคยลบสไตล์ที่ฉันต้องการหรือไม่?
ไม่ CompactStyles จะลบสไตล์ที่ไม่ได้อ้างอิงโดยเซลล์หรือกฎการจัดรูปแบบใด ๆ ในเวิร์กบุ๊ก.
ฉันสามารถอ่าน LoadDiagnostics ได้แม้ว่าไม่มีการซ่อมแซมใดๆ ถูกพยายามหรือไม่?
ใช่. คอลเลกชัน Issues จะว่างเปล่าและทั้ง HasRepairs และ HasDataLossRisk จะคืนค่า false.