一、需求:开发过程中,程序导出的Excel表中的数字为文本(即在Excel中表现为单元格左上角带绿色三角形),导致需要在Excel中先转换格式才能统计;表中的日期也为文本,不能直接利用Excel的自动刷选功能按月、季度和年度选择。

二、关键代码:

(1)设置为数值

HSSFCellStyle hssfCellStyleDouble = wb.createCellStyle();
HSSFDataFormat df = wb.createDataFormat(); // 此处设置数据格式
hssfCellStyleDouble.setDataFormat(df.getBuiltinFormat("#,##0.0"));//保留1位小数点

cell0.setCellValue( Double.parseDouble(value)) ;
cell0.setCellStyle(hssfCellStyleDouble);

(2)设置为日期
HSSFCellStyle hssfCellStyleDate = wb.createCellStyle();
hssfCellStyleDate.setDataFormat(df.getFormat("yyyy-MM-dd"));//
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

cell0.setCellValue( format.parse(value) );
cell0.setCellStyle(hssfCellStyleDate);

在图1中可以看到,单元格没有绿色三角形,元数据是整数则显示整数,是小数则保留一位小数,可直接统计。

在图2中可以看到,单元格显示的虽然是yyyy-mm-dd格式,但是在Excel中识别为yyyy/mm/dd格式,这是Excel日期格式默认识别的一种,所以在图3中可以看到可以直接利用EXCEL的自动筛选功能按月、季度和年度进行选择了。

单元格除了要设置格式外,保存到单元格的数据也要设置为同一格式,否则最终导出的Excel数据达不到你想要的效果。

一、需求:开发过程中,程序导出的Excel表中的数字为文本(即在Excel中表现为单元格左上角带绿色三角形),导致需要在Excel中先转换格式才能统计;表中的日期也为文本,不能直接利用Excel的自动刷选功能按月、季度和年度选择。二、关键代码:(1)设置为数值 HSSFCellStyle hssfCellStyleDouble = wb.createCellStyl...
一.关于 Excel 中自定义 日期 单元格 解析成字符串的问题 之前写了一篇 POI 解析 Excel -------- poi 的简单使用及 格式 转换 的文章,文章中遗留了一个问题 case NUMERIC: // 数字类型 小数,整数, 日期 // 如果是数字类型的话,判断是不是 日期 类型 if (HSSFDateUtil.isCellDateFormatted(cell)) { // 获取 日期 类...
先看导出用到了什么工具 查看源码发现 导出 使用了 Easy Excel 立马想到 一般情况下导出实体的字段类型可能是String 才会导致 数字类型 在 Excel 中是 数值 类型的字符串 去找导出实体对象 查看相应字段类型 很遗憾 并不是想象中的一般情况 这里的字段类型都是BigDecimal 按道理来说 导出的 数
最近做的一个ITFIN的项目中,后台需要用 POI 实现导出功能,导出的数据中有文本 格式 ,也有货币 格式 ,所以为了方便在将来导出的表格中做计算,存放货币的 单元格 需要 设置 数值 类型。   导出的 Excel 单元格 都是文本 格式 单元格 左上角有个小三角):   费了不少功夫,终于把“小三角”去掉了,这里总结并分享一下问题的解决方法。    通过 poi 导出 excel 的过程大致是这样的:
最近做项目遇到的坑,百度了半天导出都为货币类型、自定义类型和常规类型,,,最后终于解决,在此记录一下 其中contextstyle.setDataFormat(df.getFormat("0_ "));要特别注意"0_ ",下划线后面有一个空格!!!,缺少空格则不会导出为 数值 类型。 注意空格!!!注意空格!!!注意空格!!! * 设置 Excel 单元格 数值 类型便于公式运算 * @param workbook * @param contextstyle ``` java // 创建下拉列表对象 DataValidationHelper validationHelper = new XSSFDataValidationHelper(sheet); DataValidationConstraint constraint = validationHelper.createExplicitListConstraint(new String[]{"选项1", "选项2", "选项3"}); // 设置 下拉列表数据有效性约束对象到指定的 单元格 区域 CellRangeAddressList addressList = new CellRangeAddressList(0, 0, 0, 0); DataValidation dataValidation = validationHelper.createValidation(constraint, addressList); sheet.addValidationData(dataValidation); 在上面的代码中,`sheet` 是一个 `org.apache. poi .ss.usermodel.Sheet` 对象,表示您要 设置 下拉框的 单元格 所在的工作表。在这个示例中,我们创建了一个下拉列表对象,并通过 `DataValidationHelper.createExplicitListConstraint` 方法将选项列表传递给它。然后,我们使用 `XSSFDataValidationHelper` 类的 `createValidation` 方法创建一个数据有效性约束对象,并将其添加到指定的 单元格 区域。在这个示例中,我们将下拉框添加到第一行第一列的 单元格 。 请注意,以上示例是针对 XLSX 文件 格式 的。如果您使用的是旧的 XLS 文件 格式 ,则需要使用 `HSSFDataValidationHelper` 类而不是 `XSSFDataValidationHelper` 类。
net.sf.json.JSONException: java.lang.NoSuchMethodException: Property 'username' has no getter method