2016-03-07 96 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