How can columns be set to 'autosize' in Ex

2019-01-23 13:22发布

NPOI is a .NET port of the Java POI project, which allows one to read and write Microsoft Excel documents (as well as other Office formats). NPOI 1.2.2 has introduced support for 'autosizing' columns, whereby the column is set to the width of the widest cell entry in the column. However, there are many reports that this does not work. So is it possible?

标签: excel npoi
2条回答
放我归山
2楼-- · 2019-01-23 13:58

As already indicated by Yellowfog the following will work

mySheet.AutoSizeColumn(columnIndex)

However some abiguity appears in the posts. It seems to be a method that only works after you have completed entering data, styles etc. So that this will work

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

but the following will have no effect (because it has no information to auto size against)

ISheet mySheet = hssfworkbook.CreateSheet("sheet1");
mySheet.AutoSizeColumn(0);
IRow row = mySheet.CreateRow(0);
ICell cell = row.CreateCell(0);
cell.SetCellValue("foo");
查看更多
倾城 Initia
3楼-- · 2019-01-23 14:01

I've posted this just to answer it, so as to provide a record. It is possible to make columns autosized using NPOI, but you have to add all the data in columns, rather than in rows. Once all the cells have been added to a column @ columnIndex you then call

mySheet.AutoSizeColumn(columnIndex)

and move to the next column. I have found no other way to make this functionality work.

查看更多
登录 后发表回答