应用场景

我们经常会在开发遇到需要通过Poi生成类似下面这样的复选框
在这里插入图片描述

解决方式

我们可以通过unicode编码:u25A1 来代表勾选复选框
通过大写R,加上设置字体为 Wingdings 2 的方式来代表选中复选框

代码示例

package com.tl.poi;

import lombok.extern.slf4j.Slf4j;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;

/**
 * 使用poi在word生成勾选checkbox
 *
 * @author tianle
 */
@Slf4j
public class PoiCheckBox {

    public static void main(String[] args) throws IOException {
        // 初始化数据
        initData();
        // 生成文档
        generateWordCheckBox();
    }

    public static Map<String, Boolean&gt; checkColorMap = new LinkedHashMap<&gt;();

    /**
     * 使用poi在word中生成可勾选checkbox
     * <p>
     * 核心思想:通过UNICODE编码键盘的键来实现
     *
     * @throws IOException
     */
    public static void generateWordCheckBox() throws IOException {
        // 创建一个文档
        XWPFDocument document = new XWPFDocument();

        // 创建一个段落(一行)
        XWPFParagraph paragraph = document.createParagraph();

        Set<Map.Entry<String, Boolean>> entries = checkColorMap.entrySet();
        for (Map.Entry<String, Boolean> entry : entries) {
            // 创建一个
            XWPFRun run = paragraph.createRun();

            String checkBox;
            // 勾选一个大写的R加上Wingdings 2字体就是一个勾选的方框)
            if (entry.getValue()) {
                checkBox = "R";
            } else {
                // 不勾选的unicode编码
                checkBox = "u25A1";
            }
            run.setText(checkBox);
            run.setFontFamily("Wingdings 2");
            run.setFontSize(14);

            // 创建颜色名字的域
            XWPFRun run1 = paragraph.createRun();
            run1.setText(entry.getKey() + "    ");
        }

        document.write(new FileOutputStream("D://poi生成复选框.docx"));
        log.info("文档生成成功!");
    }

    public static void initData() {
        checkColorMap.put("红色", true);
        checkColorMap.put("白色", false);
        checkColorMap.put("绿色", true);
        checkColorMap.put("蓝色", true);
        checkColorMap.put("橙色", false);
        checkColorMap.put("黄色", true);
        checkColorMap.put("黑色", false);
    }
}

结语

以上就是解决如何通过Poi在word中生成复选框问题方法大家如果还有其他场景问题,也可以留言

原文地址:https://blog.csdn.net/tl101120/article/details/129745498

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_37668.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注