Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java POI-以HH:MM:SS.sss格式处理数据_Java_Excel_Apache Poi - Fatal编程技术网

Java POI-以HH:MM:SS.sss格式处理数据

Java POI-以HH:MM:SS.sss格式处理数据,java,excel,apache-poi,Java,Excel,Apache Poi,我在一个项目中工作,我有HH:MM:SS.sss格式的数据,我必须在Excel/电子表格中生成报告。我正在使用POI生成excel文件,但我面临以下问题: 如果我以字符串格式设置数据,即cell.setCellValue(“02:45:6.7”)不可能使用Excel公式,例如平均值,总和等。即使我将单元格格式化为[h]:mm:ss.000@即cs.setDataFormat(df.getFormat(“[h]:mm:ss.000;@”))is不起作用,因为它是字符串 HSSFCellStyle

我在一个项目中工作,我有
HH:MM:SS.sss
格式的数据,我必须在Excel/电子表格中生成报告。我正在使用POI生成excel文件,但我面临以下问题:

  • 如果我以字符串格式设置数据,即
    cell.setCellValue(“02:45:6.7”)
    不可能使用Excel公式,例如
    平均值
    总和
    等。即使我将单元格格式化为
    [h]:mm:ss.000@
    cs.setDataFormat(df.getFormat(“[h]:mm:ss.000;@”))is不起作用,因为它是字符串

    HSSFCellStyle cs=hssfworkbook.createCellStyle();
    HSSFDataFormat df=hssfworkbook.createDataFormat();
    cs.setDataFormat(df.getFormat(“[h]:mm:ss.000;@”)

  • Excel没有任何以
    hh:mm:ss格式获取数据的功能(据我所知)。sss
    格式,我尝试使用“时间(hh,mm,ss)”并将单元格格式设置为
    [h]:mm:ss.000@小数点替换为000后不显示值,即
    时间(02,45,6.7)显示为02:45:6.000

  • 我试着在POI源代码中进行修改,我试着按照这个问题中的步骤进行修改,但仍然不起作用。生成的文件显示-此文件的某些公式或名称包含金山电子表格不支持的内置函数,重新计算这些公式或名称可能会导致不正确的结果。 Microsoft Office无法打开它提供的文件。错误文件:数据可能已丢失


  • 我很长一段时间没有和POI合作,但据我回忆。。。日期只是数字(毫秒)。只有单元格类型定义为日期/数字单元格

    然后在别处定义单元的实际视觉表示

    我的一些旧代码(可能不是最新的POI版本有此语句):

    可以将单元样式(显示格式)设置为:


    因此,我将深入研究
    样式
    部分。。。以及如何设置(抱歉,本部分没有工作示例)。也许它会和你的代码一起工作。。。因为您没有将值设置为数字,而是设置为字符串。

    谢谢您的回答,我想这不会起作用。如何使用“datetimeformatils.parseDate(value);”解析“HH:MM:SS.sss”中的日期对于这个特定的格式没有这样的方法。这是我的方法,忽略它。您可以使用SimpleDateFormat将字符串解析为日期(只需谷歌搜索即可)。如果我使用SimpleDateFormat将字符串解析为日期,它还将包括日期部分,例如DateFormat ff=newSimpleDateFormat(“HH:mm:ss.SSS”),结果是一个日期对象。。。格式=SimpleDataFormat(yourFormat);日期=format.parse(stringDate);如果我使用SimpleDateFormat解析到日期的字符串,它还将包括日期部分,例如DateFormat ff=newSimpleDateFormat(“HH:mm:ss.SSS”);SOP(ff.parse(“08:6:2.011”);从1970年1月1日开始需要时间。我只想要“时间”部分,但它也包括“日期”部分。有没有可能只包括计时部分。。cell.setCellValue(..)采用3种类型的值——字符串、富文本和日期。您是否尝试阅读?@Gagravarr感谢您的回答您指的是这一种吗?“cellStyle.setDataFormat(createHelper.createDataFormat().getFormat(“m/d/yy h:mm”);”输入您实际需要的任何格式(从Excel复制),然后根据该文档设置包含时间的合适java日期对象,您应该这样做
    HSSFCell cell = newRow.createCell(column);
    
    Date date = new Date(some_date_value); 
    cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC);
    cell.setCellValue(date);
    
    cell.setCellStyle(style);