2016-03-07 3 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 (ROWCOUNT - 1) .PhysicalNumberOfCells;' дает вам колонки подсчет? – Spidey

+0

rowcount - переменная, которую я использую для подсчета числа строк. - 1 потому что я установил rowcount ++; в каждом цикле, и я хочу получить последнюю «полную» строку [Ссылка на изображение] (http://i.imgur.com/LiowsKq.png) – Derpzilla

+0

Является ли ячейка формулой? Какая польза или GC.Collect? '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 se мои ответы редактирует – VDN

+0

@VDN это лучше подходит для комментариев, так как это не полный ответ. – Spidey

Смежные вопросы