Apache POI数据格式

时间:2014-09-11 14:28:58

标签: java excel apache-poi poi-hssf

我正在使用Apache POI构建一些excel文件,我想确保某些单元格的类型为" Number"。

我尝试了以下内容:

    style.setDataFormat(HSSFDataFormat.getBuiltinFormat("0"));
    cell.setCellValue(Integer.valueOf(value));
    cell.setCellStyle(style);

    HSSFDataFormat format = workbook.createDataFormat();
    style.setDataFormat(format.getFormat("0"));
    cell.setCellValue(Integer.valueOf(value));
    cell.setCellStyle(style);

其中value是我想在单元格中显示为Number的字符串。

这两种方法都有效。那么,两者之间是否存在差异? HSSFDataFormat.getBuiltinFormat()和getFormat()?

1 个答案:

答案 0 :(得分:1)

正如您在源代码中看到的,函数getFormat首先使用buildinFormats:

public short getFormat( String format )
{
    ListIterator i;
    int ind;
    if (format.toUpperCase().equals("TEXT")) 
            format = "@";
      if ( !movedBuiltins )
      {
        i = builtinFormats.listIterator();
        while ( i.hasNext() )
        {
            ind = i.nextIndex();
            if ( formats.size() < ind + 1 )
            {
                formats.setSize( ind + 1 );
            }
            formats.set( ind, i.next() );
        }
        movedBuiltins = true;
    }
    i = formats.listIterator();
    while ( i.hasNext() )
    {
        ind = i.nextIndex();
        if ( format.equals( i.next() ) )
            return (short) ind;
    }
    ind = workbook.getFormat( format, true );
    if ( formats.size() <= ind )
        formats.setSize( ind + 1 );
    formats.set( ind, format );
    return (short) ind;
}