Как можно установить «авторазмер» для столбцов в документах Excel, созданных с помощью NPOI? - PullRequest
17 голосов
/ 30 июня 2010

NPOI - это порт .NET проекта Java POI, который позволяет читать и писать документы Microsoft Excel (а также другие форматы Office).В NPOI 1.2.2 добавлена ​​поддержка «авторазмера» столбцов, в результате чего для столбца устанавливается ширина самой широкой записи ячейки в столбце.Тем не менее, есть много сообщений, что это не работает.Так возможно ли это?

Ответы [ 2 ]

30 голосов
/ 30 июня 2010

Я разместил это только для того, чтобы ответить на него, чтобы предоставить запись. можно сделать автоматически изменяющим размер столбцов с помощью NPOI, но вы должны добавить все данные в столбцы, а не в строки.После того, как все ячейки добавлены в столбец @ columnIndex, вы вызываете

mySheet.AutoSizeColumn(columnIndex)

и переходите к следующему столбцу.Я не нашел другого способа заставить эту функцию работать.

4 голосов
/ 01 мая 2013

Как уже указывало Yellowfog, будет работать следующее

mySheet.AutoSizeColumn(columnIndex)

Однако в сообщениях появляется некоторая неопределенность.Похоже, это метод, который работает только после того, как вы завершили ввод данных, стилей и т. Д. Так что это будет работать

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");
...