java poi框架导出excel如何插入特殊字符(复选框勾选)

java poi框架导出excel如何插入特殊字符(复选框勾选)

背景:

google了好久java导出excel如何导出复选框勾选状态,没有找到可行的结果,实际操作了一下,要不就是导不出,要不就是导出之后不正确。
先看看要导出的excel格式吧

在这里插入图片描述

就是一个单元格中包含了中文和方框的符号,根据后台结果,如果是true,需要在方框内打勾。

正常手动在excel中插入复选框勾选是如何操作的

1.选择
在这里插入图片描述

2.找到Wingdings 2字体
在这里插入图片描述

就可以手动插入一个check的复选框了

poi框架导出如何设置

1.要注意每个字符其实就是一个Unicode编码,checkbox在代码中表示如下:\u0052
2.正常字体的\u0052编码对应的字符是R
3.修改单元格内字体,如果修改的过长,中文字符就会变乱码,如果修改的过短,就不能正常展示我们插入的特殊符号
4.我曾经尝试设置cell的font,但是发现会影响其它单元格的font,并且cell中包含的中文字符也会变成乱码,所以就放弃设置cell的font了

代码如下:

/**
 * 该方法是处理checkbox的
 */
public RichTextString process(Cell cell, Object input, Font font) {
    RichTextString richTextString;
    // 设置字体名称
    font.setFontName("Wingdings 2");
    if (Objects.equals(input, true)) {
      richTextString = new HSSFRichTextString("是\u0052 否\u25A1");
      richTextString.applyFont(1, 2, font);
    } else {
      richTextString = new HSSFRichTextString("是\u25A1 否\u0052");
      richTextString.applyFont(4, 5, font);
    }
    return richTextString;
}
    // font是通过workbook创建出来的,是不能new的
    Font font = workbook.createFont();
    // 此处省略自己封装的框架,value值就是上面方法返回的RichTextString
    cell.setCellValue((RichTextString) value);
    

导出结果如图:

在这里插入图片描述

最后:

至于纳税人识别号的方框内填数字,到现在也没好的方法来解决,手动插入还不会,更别提代码处理了,如果有人有更好的方案可以提出来,一起进步。

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值