Ich erstelle eine XLSX mit OpenXML SDK-Datei und ich bin eine benutzerdefinierte Spaltenbreite Angabe:Benutzerdefinierte Spaltenbreite in OpenXML vs MS Excel
using (SpreadsheetDocument spreadsheet = SpreadsheetDocument.Create("Book1.xlsx", SpreadsheetDocumentType.Workbook))
{
WorkbookPart workbookPart = spreadsheet.AddWorkbookPart();
workbookPart.Workbook = new Workbook();
WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>();
worksheetPart.Worksheet = new Worksheet();
spreadsheet.WorkbookPart.Workbook.AppendChild<Sheets>(
new Sheets(
new Sheet() { Id = spreadsheet.WorkbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name = "Sheet1" }));
worksheetPart.Worksheet.Append(
new Columns(
new Column() { Min = 1, Max = 1, Width = 15, CustomWidth = true }),
new SheetData());
workbookPart.Workbook.Save();
}
Aber wenn ich die resultierende „Mappe1 öffnen .xlsx“Datei in MS Excel und prüfen sie den Wert der Spalte, es zeigt:
Breite: 14,29 (105 Pixel)
auch, wenn ich gesetzt der Wert der Spalte mit MS Excel:
Breite: 15 (110 Pixel)
Und dann diesen Wert mit OpenXML SDK las ich ~ 15,711 bekommen.
Die Frage ist warum, warum ist es anders?
Ich habe ein paar Fragen dazu in SO gelesen. Dies scheint ein Fehler im SDK zu sein. Ich bin noch nicht auf eine Lösung für dieses Problem gestoßen – Zac
Können Sie mir Links zu einigen dieser Abfragen senden, so dass ich sie auschecken kann? Ich konnte sie nicht finden, ich sehe nur Beiträge, die sich auf die Definition der Spaltenbreite beziehen und sich auf die automatische Anpassung beziehen. Ich bin mir auch nicht sicher, ob dies ein Fehler in SDK oder ein Fehler in MS Excel ist, weil intern die XLSX-Datei den richtigen Wert innerhalb (15) gespeichert hat, aber MS Excel zeigt diesen Wert mit einem leichten Anstieg (~ 15.711) . Wenn überhaupt, dann scheint mir das ein Fehler in MS Excel zu sein. – NixonUposseen