2012-10-29 11 views
7

OpenXMLフレームワークを使用してExcelスプレッドシートのデフォルトの列幅を設定しようとしています。その結果、ファイルが壊れてしまいました。ここで私は「のAppendChild」対使う「追加」しようとしていた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); ![enter image description here][1] 

    // 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(); 
} 

hereされているが、結果は同じ

は、誰もがそれをソートするかの視点を持っていましたでる?

+0

提案を確認できませんでしたが、workheet.Append(プロパティ)を使用してみてください。そして、そのworksheet.Append(sheetData); 。この順番で。 – Shelest

+0

私はこの解決策をチェックしました - プロパティを適用する注文は関係ありません。とにかく、お返事ありがとうございます –

答えて

20

大丈夫です。その理由は、SheetFormatPropertiesオブジェクトにはが必要です。属性defaultRowHeightが必要です。 defaultRowHeight = 0を代入することもできますが、それは提示する必要があります。だから使用する

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

と喜んで=)СлаваУкраине!

+12

ありがとうございました - これはまさに私が探していたものです! ГероямСлава! –

+11

何について質問が分かりません。 Героямслава! – SeniorJD

+6

Героямслава!!! – megas

関連する問題