7

OpenXML フレームワークを使用して Excel スプレッドシートでデフォルトの列幅を設定しようとしていますが、その結果、ファイルが壊れてしまいました。ここにコードがあります

private void initSpreadsheetDocument()
{
    // Add a WorkbookPart to the spreadsheet document.
    WorkbookPart workbookpart = spreadsheetDocument.AddWorkbookPart();
    workbookpart.Workbook = new Workbook();

    var sheetData = new SheetData();
    var properties = new SheetFormatProperties { DefaultColumnWidth = 25D };

    Worksheet worksheet = new Worksheet();
    worksheet.AppendChild(sheetData);
    
    // here is line of code that corrupt file
    // without it - file is being generated properly
    worksheet.AppendChild(properties);

    // Add a WorksheetPart to the WorkbookPart.
    WorksheetPart worksheetPart = workbookpart.AddNewPart<WorksheetPart>();
    worksheetPart.Worksheet = worksheet;

    // Init sheets
    sheetsStorage = new Sheets();

    defaultSheet = new Sheet();
    defaultSheet.Id = spreadsheetDocument.WorkbookPart.GetIdOfPart(worksheetPart);
    defaultSheet.SheetId = 1;
    defaultSheet.Name = DEFAULT_SHEET_NAME;

    sheetsStorage.AppendChild(defaultSheet);

    spreadsheetDocument.WorkbookPart.Workbook.AppendChild(sheetsStorage);
    spreadsheetDocument.WorkbookPart.Workbook.Save();
}

「Append」と「AppendChild」を使用しようとしましたが、結果は同じでした

誰かがそれを整理する方法を持っていますか?

4

1 に答える 1

20

わかった。その理由は、SheetFormatProperties オブジェクトに必要な属性 defaultRowHeight があるためです。defaultRowHeight = 0 を割り当てることもできますが、存在する必要があります。だから使う

SheetFormatProperties sheetFormatProperties1 = new SheetFormatProperties(){ DefaultColumnWidth = 12.75D, DefaultRowHeight = 0D};

そして幸せになる=) СлаваУкраине!

于 2012-10-29T12:07:40.130 に答える