ทำงานกับการตั้งค่า Core Workbook

ทำงานกับการตั้งค่า 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.HasRepairstrue หากมีการซ่อมแซมใด ๆ ถูกดำเนินการ
LoadDiagnostics.HasDataLossRisktrue หากการซ่อมทำให้ข้อมูลถูกทิ้ง
LoadDiagnostics.Issuesคอลเลกชันของอ็อบเจกต์ DiagnosticEntry
DiagnosticEntry.Codeสตริงโค้ดการซ่อมสั้น
DiagnosticEntry.SeverityDiagnosticSeverity ค่า enum
DiagnosticEntry.Messageคำอธิบายการซ่อมที่อ่านได้โดยมนุษย์
SaveOptions.UseSharedStringsจัดเก็บสตริงในตารางสตริงที่ใช้ร่วมกัน
SaveOptions.ValidateBeforeSaveทำการตรวจสอบภายในก่อนเขียน
SaveOptions.CompactStylesลบสไตล์ที่ไม่ได้ใช้

ดูเพิ่มเติม

 ภาษาไทย