java 您所在的位置:网站首页 文本型数据怎么设置 java

java

2024-07-03 08:30| 来源: 网络整理| 查看: 265

java-EasyExcel导出excel设置单元格为文本格式(含代码)

在使用EasyExcel导出excel模板时。我们会发现导出的日期和大长度数字都会自动更换格式,不是文本格式。并且在空白单元格输入日期也是格式有问题的,如下所示,可以看到当输入相同的日期时,格式会变成自适应,不是文本格式了,所以我们需要从代码里设置,导出表格的单元格固定是文本(我的项目中使用EasyExcel是2.0+的版本,不同版本可能代码实现是不同的,但是原理都是一样的)。 在这里插入图片描述

一、设置空白单元格的格式为文本

新建一个handler实现SheetWriteHandler接口,在创建单元格时设置格式为文本

public class CustomSheetWriteHandler implements SheetWriteHandler { // 设置100列column private static final Integer COLUMN = 100; @Override public void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) { } @Override public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) { for (int i = 0; i /** * 所属年月 */ @HeadFontStyle(color= 10) @ExcelProperty(value = "所属年月") @ContentStyle(dataFormat = 49) private String expenseMonth; /** * 会计主体 */ @HeadFontStyle(color= 10) @ExcelProperty(value = "会计主体") @ContentStyle(dataFormat = 49) private String borrowerName; /** * 凭证号 */ @HeadStyle(fillForegroundColor = 22) @ExcelProperty(value = "凭证号") @ContentStyle(dataFormat = 49) private String voucherNo; /** * 摘要 */ @HeadFontStyle(color= 10) @ExcelProperty(value = "摘要") private String summary; /** * 科目 */ @HeadFontStyle(color= 10) @ExcelProperty(value ="科目") private String subjectName; /** * 部门 */ @HeadFontStyle(color= 10) @ExcelProperty(value ="部门") private String orgName; /** * 人员 */ // @HeadFontStyle(color= 10) @HeadStyle(fillForegroundColor = 22) @ExcelProperty(value ="人员") private String personnel; /** * 金额 */ @HeadFontStyle(color= 10) @ExcelProperty(value ="金额") @ContentStyle(dataFormat = 49) private String amount; /** * ID号 */ @HeadStyle(fillForegroundColor = 22) @ExcelProperty(value ="ID号") @ContentStyle(dataFormat = 49) private String idNo; /** * 调整类型 */ @HeadStyle(fillForegroundColor = 22) @ExcelProperty(value ="调整类型") private String remark; }

三、在导出模板注册第一步新建的handler类

.registerWriteHandler(new CustomSheetWriteHandler())

下面是导出模板的实现类,用于测试:

public void downloadOtherExpenseTemplate(HttpServletResponse response) { List remarks = remarkService.listAll(new RemarkQueryBo()); List expenseTemplateModels = new ArrayList(); // 添加样例数据 ExpenseTemplateModel expenseTemplateModel = new ExpenseTemplateModel(); expenseTemplateModel.setExpenseMonth("2022-09"); expenseTemplateModel.setBorrowerName("测试有限公司1"); expenseTemplateModel.setSummary("测试用情况"); expenseTemplateModel.setSubjectName("测试经费"); expenseTemplateModel.setOrgName("测试会"); expenseTemplateModel.setPersonnel("张达达"); expenseTemplateModel.setAmount("300"); expenseTemplateModels.add(expenseTemplateModel); OutputStream outputStream = null; try { String fileName = "测试模板"; outputStream = response.getOutputStream(); response.setContentType("multipart/form-data"); response.setCharacterEncoding("utf-8"); response.setHeader("Content-Disposition", "attachment;filename*=utf-8'zh_cn'" + URLEncoder.encode(fileName + ".xlsx", "UTF-8")); EasyExcel.write(outputStream, ExpenseTemplateModel.class).autoCloseStream(true) .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) .registerWriteHandler(new CustomSheetWriteHandler()) .sheet(fileName).doWrite(expenseTemplateModels); } catch (IOException e) { throw new ResultException("导出excel异常: " + e.getMessage()); } finally { IOUtils.closeQuietly(outputStream); } }

在这里插入图片描述

可以看到导出的模板每个单元格的格式都是文本了。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有