ทำงานกับการตั้งค่า Core Workbook
ทำงานกับการตั้งค่า Workbook หลัก
นอกเหนือจากตารางแผ่นงาน, workbook จะบรรจุข้อมูลเมตาและการกำหนดค่าที่ส่งผลต่อการที่ Excel ตีความ: ระบบวันที่, ผู้เขียนเอกสาร, ภูมิภาค, และว่าข้อมูลการกู้คืนถูกจัดเก็บหรือไม่. คลาส Workbook เปิดเผยสิ่งเหล่านี้ผ่าน Workbook.Settings, Workbook.Properties และ Workbook.LoadDiagnostics. พฤติกรรมการบันทึกถูกควบคุมผ่าน SaveOptions.
การตั้งค่า Workbook
Workbook.Settings คืนค่าอ็อบเจกต์ประเภท WorkbookSettings. ตั้งค่า Date1904 เป็น true เพื่อใช้ระบบวันที่ 1904 (พบบ่อยในไฟล์ที่มาจาก Excel บน macOS). ตั้งค่า Culture เป็นอินสแตนซ์ของ CultureInfo เพื่อควบคุมภูมิภาคการแยกตัวเลขและวันที่.
using Aspose.Cells_FOSS;
using System.Globalization;
var wb = new Workbook();
// Use 1904 date system
wb.Settings.Date1904 = true;
// Set culture for number/date formatting
wb.Settings.Culture = new CultureInfo("en-US");
wb.Worksheets[0].Cells["A1"].PutValue("Settings applied");
wb.Save("settings.xlsx");
var loaded = new Workbook("settings.xlsx");
Console.WriteLine("Date1904: " + loaded.Settings.Date1904);คุณสมบัติของเอกสาร
Workbook.Properties คืนค่าอ็อบเจกต์ประเภท WorkbookProperties ที่มีแฟล็กแบบแสดงผลเช่น ShowObjects และ FilterPrivacy. สำหรับข้อมูลผู้เขียนและเมตาดาต้าเชิงอธิบายให้ใช้ Workbook.DocumentProperties, ซึ่งเปิดเผย Title, Subject, Author, Keywords, Comments, Category, Company, และ Manager เป็นคุณสมบัติแบบสตริงโดยตรง.
using Aspose.Cells_FOSS;
var wb = new Workbook();
var doc = wb.DocumentProperties;
doc.Title = "Quarterly Report";
doc.Subject = "Sales Data";
doc.Author = "Reporting Team";
doc.Company = "Contoso Ltd";
doc.Keywords = "sales, quarterly, 2026";
doc.Comments = "Generated by automated pipeline";
wb.Worksheets[0].Cells["A1"].PutValue("See document properties");
wb.Save("properties.xlsx");
var loaded = new Workbook("properties.xlsx");
Console.WriteLine("Title: " + loaded.DocumentProperties.Title);
Console.WriteLine("Author: " + loaded.DocumentProperties.Author);การวินิจฉัยการโหลด
หลังจากโหลดเวิร์กบุ๊กแล้ว ให้ตรวจสอบ Workbook.LoadDiagnostics เพื่อค้นหาว่าห้องสมุดได้ทำการซ่อมแซมใดหรือไม่ LoadDiagnostics.HasRepairs จะเป็น true หากมีการซ่อมแซมโครงสร้างอย่างน้อยหนึ่งครั้ง LoadDiagnostics.HasDataLossRisk จะเป็น true หากการซ่อมแซมทำให้ข้อมูลถูกละทิ้ง ให้ทำการวนซ้ำ LoadDiagnostics.Issues เพื่อเข้าถึงวัตถุ DiagnosticEntry แต่ละรายการด้วย Code, Severity, Message, RepairApplied และ DataLossRisk.
using Aspose.Cells_FOSS;
var opts = new LoadOptions { TryRepairPackage = true, TryRepairXml = true };
try
{
var wb = new Workbook("possibly-corrupt.xlsx", opts);
var diag = wb.LoadDiagnostics;
if (diag.HasRepairs)
{
Console.WriteLine("Repairs applied: " + diag.HasRepairs);
Console.WriteLine("Data loss risk: " + diag.HasDataLossRisk);
foreach (var entry in diag.Issues)
{
Console.WriteLine($" [{entry.Severity}] {entry.Code}: {entry.Message}");
Console.WriteLine($" RepairApplied={entry.RepairApplied}, DataLossRisk={entry.DataLossRisk}");
}
}
else
{
Console.WriteLine("File loaded cleanly.");
}
}
catch (WorkbookLoadException ex)
{
Console.WriteLine("Unrecoverable: " + ex.Message);
}ตัวเลือกการบันทึก
Workbook.Save(path, SaveOptions) ยอมรับอ็อบเจ็กต์ SaveOptions เพื่อปรับแต่งผลลัพธ์การบันทึก UseSharedStrings ควบคุมว่าค่าข้อความจะถูกเก็บในตารางสตริงที่ใช้ร่วมกันหรือไม่ (ช่วยลดขนาดไฟล์สำหรับชีตที่มีสตริงซ้ำหลายครั้ง) ValidateBeforeSave ทำการตรวจสอบความถูกต้องของเวิร์กบุ๊กภายในก่อนการเขียน CompactStyles ลบสไตล์ที่ไม่ได้ใช้ PreserveRecoveryMetadata ควบคุมว่าข้อมูลเมตารีคเวอรีของ Office จะถูกเก็บไว้หรือไม่.
using Aspose.Cells_FOSS;
var wb = new Workbook();
var ws = wb.Worksheets[0];
for (var i = 0; i < 100; i++)
ws.Cells[i, 0].PutValue("Repeated string value");
var opts = new SaveOptions
{
UseSharedStrings = true,
ValidateBeforeSave = true,
CompactStyles = true,
PreserveRecoveryMetadata = false,
};
wb.Save("compact.xlsx", opts);
Console.WriteLine("Saved with SaveOptions.");เคล็ดลับและแนวทางปฏิบัติที่ดีที่สุด
- ตรวจสอบ
LoadDiagnostics.HasDataLossRiskหลังจากโหลดไฟล์ที่ได้รับการซ่อมแซมและเตือนผู้ใช้หากข้อมูลอาจถูกตัดออก. - ตั้งค่า
DocumentProperties.AuthorและCompanyสำหรับไฟล์ที่แชร์กับผู้ใช้ปลายทาง — ค่าต่าง ๆ นี้จะแสดงในแผงข้อมูลไฟล์ของ Excel. UseSharedStrings = trueมีประโยชน์สำหรับชีตที่มีค่าข้อความซ้ำหลายครั้ง (เช่น คอลัมน์สถานะ) ; มีผลกระทบเพียงเล็กน้อยต่อชีตที่มีตัวเลขเป็นหลัก.Date1904ต้องตรงกันระหว่างไฟล์ต้นทางและไฟล์เป้าหมายเพื่อหลีกเลี่ยงการเปลี่ยนแปลงค่าที่เป็นวันที่เมื่อคัดลอกเซลล์ระหว่างเวิร์กบุ๊ก.
ปัญหาที่พบบ่อย
| ปัญหา | สาเหตุ | แก้ไข |
|---|---|---|
LoadDiagnostics.Issues ว่างหลังการซ่อมแซม | ไม่จำเป็นต้องซ่อมแซม หรือ TryRepair* ไม่ได้ตั้งค่า | ตั้งค่า TryRepairPackage = true และ TryRepairXml = true ใน LoadOptions |
DocumentProperties.Title ไม่ได้บันทึก | ใช้ WorkbookProperties แทน DocumentProperties | เข้าถึงเมตาดาต้าสตริงผ่าน Workbook.DocumentProperties ไม่ใช่ Workbook.Properties |
WorkbookSaveException เมื่อบันทึก | การตรวจสอบล้มเหลวกับ ValidateBeforeSave = true | ตรวจสอบข้อความข้อยกเว้น; ปิดการตรวจสอบเพื่อแยกข้อมูลที่ผิดพลาด |
FAQ
ความแตกต่างระหว่าง WorkbookProperties กับ DocumentProperties คืออะไร?
WorkbookProperties (ผ่าน Workbook.Properties) เก็บแฟล็กการแสดงผล OOXML (เช่น ShowObjects) . DocumentProperties (ผ่าน Workbook.DocumentProperties) เก็บสตริงเมตาดาต้าแบบ Dublin-Core: Title, Author, Company, etc.
CompactStyles ลบสไตล์ที่ฉันต้องการหรือไม่?
CompactStyles ลบเฉพาะสไตล์ที่ไม่ได้อ้างอิงโดยเซลล์ใด ๆ, รูปแบบตามเงื่อนไข, หรือสไตล์ที่ตั้งชื่อไว้เท่านั้น สไตล์ที่กำลังใช้งานจะไม่ถูกลบเลย.
ฉันสามารถอ่าน LoadDiagnostics ได้แม้ไม่มีการซ่อมแซมใด ๆ หรือไม่?
ใช่ เมื่อไม่มีการซ่อมแซมใด ๆ คอลเลกชัน Issues จะว่างเปล่าและทั้ง HasRepairs และ HasDataLossRisk จะคืนค่า false.
API Reference สรุป
| คลาส / คุณสมบัติ | คำอธิบาย |
|---|---|
Workbook.Settings | คืนค่า WorkbookSettings |
WorkbookSettings.Date1904 | ใช้ระบบวันที่ 1904 |
WorkbookSettings.Culture | โลเคลสำหรับการแยกวิเคราะห์ตัวเลข/วันที่ |
Workbook.DocumentProperties | เมตาดาต้าของผู้เขียน, ชื่อเรื่อง, บริษัท |
Workbook.LoadDiagnostics | รายงานการซ่อมแซมหลังการโหลด |
LoadDiagnostics.HasRepairs | true หากมีการซ่อมแซมใด ๆ ถูกดำเนินการ |
LoadDiagnostics.HasDataLossRisk | true หากการซ่อมทำให้ข้อมูลถูกทิ้ง |
LoadDiagnostics.Issues | คอลเลกชันของอ็อบเจกต์ DiagnosticEntry |
DiagnosticEntry.Code | สตริงโค้ดการซ่อมสั้น |
DiagnosticEntry.Severity | DiagnosticSeverity ค่า enum |
DiagnosticEntry.Message | คำอธิบายการซ่อมที่อ่านได้โดยมนุษย์ |
SaveOptions.UseSharedStrings | จัดเก็บสตริงในตารางสตริงที่ใช้ร่วมกัน |
SaveOptions.ValidateBeforeSave | ทำการตรวจสอบภายในก่อนเขียน |
SaveOptions.CompactStyles | ลบสไตล์ที่ไม่ได้ใช้ |