2016-03-07 165 views
0

我已經把.AutoSizeColumn寫方法NPOI AutoSizeColumn不正確調整

int numberOfColumns = sheet.GetRow(rowcount - 1).PhysicalNumberOfCells; 
for (int i = 0; i <= numberOfColumns; i++) 
{ 
    sheet.AutoSizeColumn(i); 
    GC.Collect(); 
} 

using (var fileData = new FileStream(@"C:\Temp\Contatti.xlsx", FileMode.Create)) 
{ 
    wb.Write(fileData); 
} 

this is an example of the result

+0

如何'sheet.GetRow(行數 - 1).PhysicalNumberOfCells;'給你列數? – Spidey

+0

rowcount是我用來計算行數的變量。 - 1因爲我設置了rowcount ++;在每個循環中,我想獲得最後一個「完整」行 [鏈接到圖像](http://i.imgur.com/LiowsKq.png) – Derpzilla

+0

細胞是否含有配方?什麼是收益或GC.Collect?當你從0開始時,'i <= numberOfColumns'應該是'i Spidey

回答

0

問題也migh是,那PhysicalNumberOfCells可以返回1,即使你有一個細胞前右可以在'Z'列中說。有LastCellNum財產,你我而不是PhysicalNumberOfCells

 int lastColumNum = sheet.GetRow(0).LastCellNum; 
     for (int i = 0; i <= lastColumNum; i++) 
     { 
      sheet.AutoSizeColumn(i); 
      GC.Collect(); 
     } 

     using (var fileData = new FileStream(@"D:\Contatti.xlsx", FileMode.Create)) 
     { 
      wb.Write(fileData); 
     } 
+0

是的,我已經把它放在所有列中,而不僅僅是第一個列。 我會編輯問題更清楚 – Derpzilla

+0

@Derpzilla我的回答編輯 – VDN

+0

@VDN這是一個更好的評論,因爲它不是一個完整的答案。 – Spidey