How to format a column instead of cell in POI hssf

折月煮酒 提交于 2019-12-22 00:35:47

问题


I'm facing an issue when opening a excel file with hundreds/thousands of rows of data, "Too Many Different Cell Formats"

More info about the error
http://excelzoom.com/2009/09/the-mystery-of-excels-too-many-different-cell-formats/

So I'm trying to format a column not a cell. The only way I can figure out how to format a column is by formating each individual cell; by implementing the code listed below. I would like to format a column instead of a row. I have hundreds/thousands of rows of data to format. Any suggestions would be very much appreciated.

Thanks,

HSSFCellStyle cellStyle = wb.createCellStyle();
HSSFDataFormat dataFormat = wb.createDataFormat();
cellStyle.setDataFormat(dataFormat.getFormat("0.00"));

HSSFRow row = sheet.createRow(iRow);
HSSFCell cell = row.createCell((short)1);
cell.setCellStyle(cellStyle);

回答1:


There is a much better way, at least when you work with the "new" Excel format. Use:

((XSSFSheet)sheet).getColumnHelper().setColDefaultStyle(col, myStyle);

Using this will ensure the styles continue even below the rows where you inserted data. And the resulting file will also be smaller.




回答2:


Found the answer here

http://poi.apache.org/faq.html#faq-N1014B go to the section

  1. I am using styles when creating a workbook in POI, but Excel refuses to open the file, complaining about "Too Many Styles".

Sam




回答3:


As you have not defined you CellStyle object outside Loop so it is creating every time new object for the Workbook so creating multiple object every time throws error.

So create CellStyle object at higher level in class & refer to same object in Loop with wb.createCellStyle();



来源:https://stackoverflow.com/questions/12050323/how-to-format-a-column-instead-of-cell-in-poi-hssf

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!