如何在POI hssf中格式化列而不是单元格

时间:2012-08-21 07:42:59

标签: excel apache-poi

打开包含数百/数千行数据的Excel文件时,我遇到了一个问题,“太多不同的单元格格式”

有关错误的详细信息
http://excelzoom.com/2009/09/the-mystery-of-excels-too-many-different-cell-formats/

所以我正在尝试格式化列而不是单元格。我能弄清楚如何格式化列的唯一方法是形成每个单独的单元格;通过实现下面列出的代码。我想格式化一列而不是一行。我有数百/数千行数据要格式化。任何建议将非常感谢。

谢谢,

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

3 个答案:

答案 0 :(得分:4)

在这里找到答案

http://poi.apache.org/faq.html#faq-N1014B转到

部分
  
      
  1. 我在POI中创建工作簿时使用样式,但Excel拒绝打开文件,抱怨“样式太多”。
  2.   

萨姆

答案 1 :(得分:4)

有一种更好的方法,至少在你使用" new" Excel格式。使用:

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

使用此选项可确保样式在插入数据的行下方继续。结果文件也会变小。

答案 2 :(得分:0)

由于您没有在Loop外部定义CellStyle对象,因此每次为Workbook创建新对象时都会创建,因此每次抛出错误都会创建多个对象。

所以在课堂上创建更高级别的CellStyle对象&使用wb.createCellStyle();

引用循环中的同一对象