1

我正在使用 Apache POI 构建一些 excel 文件,并且我想确保某些单元格的类型为“数字”。

我尝试了以下方法:

    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 是我想在单元格中显示为数字的字符串。

两种方法都有效。那么,HSSFDataFormat.getBuiltinFormat() 和 getFormat() 有区别吗?

4

1 回答 1

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;
}
于 2014-09-11T16:31:42.840 回答