2012-10-29 42 views
7

Tôi đang cố gắng thiết lập chiều rộng cột mặc định trong bảng tính Excel bằng cách sử dụng khung OpenXML và kết quả là tôi đã bị hỏng tệp. Đây là mãCài đặt thuộc tính cột bảng tính 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 được lỗi chụp màn hình

Tôi đã cố gắng sử dụng "Nối" vs "AppendChild" nhưng kết quả là như nhau

Hiện ai có một quan điểm như thế nào để sắp xếp nó ngoài?

+0

Tôi không thể kiểm tra đề xuất của mình, nhưng hãy thử sử dụng trang tính.Thêm (thuộc tính); và THEN worksheet.Append (sheetData); . Theo thứ tự này. – Shelest

+0

Tôi vừa kiểm tra giải pháp này - thứ tự áp dụng các thuộc tính không quan trọng. Dù sao, cảm ơn bạn đã trả lời –

Trả lời

20

OK. Lý do là đối tượng SheetFormatProperties có yêu cầu mặc định thuộc tínhRowHeight. Bạn thậm chí có thể gán defaultRowHeight = 0, nhưng nó phải trình bày. Vì vậy, hãy sử dụng

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

và được hạnh phúc =) Слава Украине!

+12

Cảm ơn bạn đã dành thời gian - đây chính xác là tôi đang tìm kiếm! Героям Слава! –

+11

Không biết câu hỏi là gì. Героям слава! – SeniorJD

+6

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

Các vấn đề liên quan