2010-06-30 80 views
17

NPOI是Java POI項目的.NET端口,它允許讀取和寫入Microsoft Excel文檔(以及其他Office格式)。 NPOI 1.2.2引入了對'autosizing'列的支持,其中列設置爲列中最寬單元格條目的寬度。但是,有很多報告說這不起作用。那有可能嗎?如何在使用NPOI創建的Excel文檔中將列設置爲「autosize」?

+0

在我的經驗'mySheet.AutoSizeColumn(columnIndex);'類型使用確實有效,但不是在所有情況下。如果您的列的格式設置爲Filter on,則通過雙擊Excel在Excel中執行AutoSize,同時補償下拉圖標上的Filter。代碼版本忽略「過濾器」圖標。它在最後一列的數據或列寬度大於它自動調整的最大寬度時也不能很好地工作。 – cusman 2013-03-16 15:27:11

回答

30

我已經發布這個只是爲了回答它,以便提供一個記錄。它可能使列使用NPOI進行自動化,但您必須將所有數據添加到列中而不是行中。一旦所有單元格都添加到列@ columnIndex中,然後調用

mySheet.AutoSizeColumn(columnIndex) 

並移至下一列。我找不到其他方法來使此功能正常工作。

+1

我沒有按照您的建議在列中添加數據,但「AutoSizeColumn(columnIndex)」方法無論如何都適合我。 – JohnB 2011-07-09 00:11:48

+0

奇數。同一版本? – Yellowfog 2011-07-11 12:58:58

+0

我認爲它肯定是一個在更高版本中修復的bug,因爲我將所有的數據添加爲行並使用上述方法。 – 2012-11-14 19:58:51

3

正如已經Yellowfog表示下面的工作

mySheet.AutoSizeColumn(columnIndex) 

然而,一些abiguity出現在帖子。這似乎是隻有你完成輸入數據後奏效的方法,風格等,所以,這將工作

ISheet mySheet = hssfworkbook.CreateSheet("sheet1"); 
IRow row = mySheet.CreateRow(0); 
ICell cell = row.CreateCell(0); 
cell.SetCellValue("foo"); 
mySheet.AutoSizeColumn(0); 

但下面不會有任何影響(因爲它有沒有信息對自動調整大小)

ISheet mySheet = hssfworkbook.CreateSheet("sheet1"); 
mySheet.AutoSizeColumn(0); 
IRow row = mySheet.CreateRow(0); 
ICell cell = row.CreateCell(0); 
cell.SetCellValue("foo"); 
相關問題