Praca z podstawowymi ustawieniami skoroszytu
Praca z podstawowymi ustawieniami skoroszytu
Poza siatką arkusza, skoroszyt zawiera metadane i konfigurację, które wpływają na sposób interpretacji go przez Excel: system dat, autor dokumentu, ustawienia regionalne oraz to, czy informacje o odzyskiwaniu są przechowywane. Klasa Workbook udostępnia je poprzez Workbook.Settings, Workbook.Properties i Workbook.LoadDiagnostics. Zachowanie zapisu jest kontrolowane przez SaveOptions.
Ustawienia skoroszytu
Workbook.Settings zwraca obiekt WorkbookSettings. Ustaw Date1904 na true, aby używać systemu dat 1904 (powszechny w plikach pochodzących z Excel na macOS). Ustaw Culture na instancję CultureInfo, aby kontrolować ustawienia regionalne parsowania liczb i dat.
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);Właściwości dokumentu
Workbook.Properties zwraca obiekt WorkbookProperties z flagami ukierunkowanymi na wyświetlanie, takimi jak ShowObjects i FilterPrivacy. Do informacji o autorstwie i opisowych metadanych użyj Workbook.DocumentProperties, który udostępnia Title, Subject, Author, Keywords, Comments, Category, Company i Manager jako bezpośrednie właściwości typu string.
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);Diagnostyka ładowania
Po załadowaniu skoroszytu sprawdź Workbook.LoadDiagnostics, aby dowiedzieć się, czy biblioteka zastosowała jakiekolwiek naprawy. LoadDiagnostics.HasRepairs jest true, jeśli dokonano przynajmniej jednej naprawy strukturalnej. LoadDiagnostics.HasDataLossRisk jest true, jeśli naprawa odrzuciła dane. Iteruj LoadDiagnostics.Issues, aby uzyskać dostęp do poszczególnych obiektów DiagnosticEntry z Code, Severity, Message, RepairApplied i 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);
}Opcje zapisu
Workbook.Save(path, SaveOptions) akceptuje obiekt SaveOptions, aby dostosować wyjście zapisu. UseSharedStrings kontroluje, czy wartości tekstowe są przechowywane w wspólnej tabeli ciągów (zmniejsza rozmiar pliku dla arkuszy z wieloma powtarzającymi się ciągami). ValidateBeforeSave uruchamia wewnętrzną walidację skoroszytu przed zapisem. CompactStyles usuwa nieużywane style. PreserveRecoveryMetadata kontroluje, czy metadane odzyskiwania Office są zachowywane.
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.");Wskazówki i najlepsze praktyki
- Sprawdź
LoadDiagnostics.HasDataLossRiskpo załadowaniu naprawionych plików i ostrzeż użytkowników, jeśli dane mogły zostać odrzucone. - Ustaw
DocumentProperties.AuthoriCompanydla plików udostępnianych końcowym użytkownikom — pojawiają się one w panelu informacji o pliku w Excelu. UseSharedStrings = truejest korzystny dla arkuszy z wieloma powtarzającymi się wartościami tekstowymi (np. kolumny statusu); ma minimalny wpływ na arkusze z dominacją liczb.Date1904musi się zgadzać między plikiem źródłowym a docelowym, aby uniknąć przesunięcia wartości dat przy kopiowaniu komórek między skoroszytami.
Częste problemy
| Problem | Przyczyna | Naprawa |
|---|---|---|
LoadDiagnostics.Issues jest pusty po naprawie | Nie było potrzebnych napraw lub TryRepair* nie został ustawiony | Ustaw TryRepairPackage = true i TryRepairXml = true w LoadOptions |
DocumentProperties.Title nie został zachowany | Używanie WorkbookProperties zamiast DocumentProperties | Uzyskaj metadane ciągu znaków przez Workbook.DocumentProperties, a nie Workbook.Properties |
WorkbookSaveException przy zapisie | Niepowodzenie walidacji z ValidateBeforeSave = true | Sprawdź komunikat wyjątku; wyłącz walidację, aby odizolować niepoprawne dane |
FAQ
Jaka jest różnica między WorkbookProperties a DocumentProperties?
WorkbookProperties (przez Workbook.Properties) zawiera flagi wyświetlania OOXML (np. ShowObjects). DocumentProperties (przez Workbook.DocumentProperties) zawiera ciągi metadanych w stylu Dublin-Core: Title, Author, Company, itp.
Czy CompactStyles usuwa style, których potrzebuję?
CompactStyles usuwa tylko style, które nie są odwoływane przez żadną komórkę, format warunkowy ani styl nazwany. Style będące w użyciu nigdy nie są usuwane.
Czy mogę odczytać LoadDiagnostics, nawet jeśli nie podjęto żadnej naprawy?
Tak. Gdy nie podjęto żadnej naprawy, kolekcja Issues jest pusta, a zarówno HasRepairs, jak i HasDataLossRisk zwracają false.
API Reference Podsumowanie
| Klasa / Właściwość | Opis |
|---|---|
Workbook.Settings | Zwraca WorkbookSettings |
WorkbookSettings.Date1904 | Użyj systemu daty 1904 |
WorkbookSettings.Culture | Ustawienia regionalne do parsowania liczb i dat |
Workbook.DocumentProperties | Metadane autora, tytułu, firmy |
Workbook.LoadDiagnostics | Raport naprawy po załadowaniu |
LoadDiagnostics.HasRepairs | true jeśli zastosowano jakąkolwiek naprawę |
LoadDiagnostics.HasDataLossRisk | true jeśli naprawa odrzuciła dane |
LoadDiagnostics.Issues | Zbiór obiektów DiagnosticEntry |
DiagnosticEntry.Code | Krótki ciąg kodu naprawy |
DiagnosticEntry.Severity | DiagnosticSeverity wartość enum |
DiagnosticEntry.Message | Czytelny opis naprawy |
SaveOptions.UseSharedStrings | Przechowuj ciągi w współdzielonej tabeli ciągów |
SaveOptions.ValidateBeforeSave | Przeprowadź wewnętrzną walidację przed zapisem |
SaveOptions.CompactStyles | Usuń nieużywane style |