2012-04-16 61 views
3

我試圖選擇一個特定的列,以便我可以自動設置它的寬度,但是收效甚微。我應該無法使用MSDN的GetRow版本來選擇列集合中的列嗎?OpenXML選擇一個特定的列

return worksheet.GetFirstChild<SheetData>().Elements<Row>().Where(r => r.RowIndex == rowIndex).First(); 

return worksheet.GetFirstChild<SheetData>().Elements<Column>().Where(r => r.Min== columnNumber && r.Max == columnNumber).First(); 

我正在採取正確的做法嗎? FWIW我知道如何從頭開始創建列並設置寬度,但這並不可行,因爲當我在構造函數中創建它們時,不知道數據將在列內。

回答

1

您可以將一個列對象添加到工作表中。然後我做了一個設置寬度的方法。

Worksheet ws = new Worksheet(); 
Columns columns = new Columns(); 

columns.Append(CreateColumnData(1, 1, 14.87)); 

ws.append(columns); 


private static Column CreateColumnData(UInt32 StartColumnIndex, UInt32 EndColumnIndex, double ColumnWidth) 
    { 
     Column column; 
     column = new Column(); 
     column.Min = StartColumnIndex; 
     column.Max = EndColumnIndex; 
     column.Width = ColumnWidth; 
     column.CustomWidth = true; 
     return column; 
    } 
+0

這種方式無論進入第1列什麼,寬度將被設置爲14.87 – broguyman 2012-04-16 21:20:10

+0

你是完全正確的...我已經可以做到這一點之前...我需要做的是動態選擇的寬度該列基於它內部的內容。 :(這沒有幫助。:(@broguyman – Kulingar 2012-04-19 17:14:35

0

我有同樣的問題,需要設置不同列的寬度,但無法找到網絡上的解決方案。目前爲止提供的答案只是顯示如何創建具有指定寬度的列,而不是如何動態更新指定列的寬度。可能我對.net的openxml庫不太熟悉,但DocumentFormat.OpenXml接縫沒有很好的文檔記錄,也不像Office.Interop那樣直觀。由於我的應用程序是以Azure服務運行的,因此我沒有機會使用Office.Interop。對我來說,解決方案是使用closedxml庫,它可以像使用Office.Interop一樣簡化使用openxml文檔的工作。你可以谷歌它。