当前位置: 首页 > article >正文

java导出word文件(手绘)

文章目录

    • 代码细节
    • 效果图
    • 参考资料

代码细节

使用的hutool的WordUtil,WordUtil对poi进行封装,但是这一块的官方封装的很少,很多细节都没有。代码中是常见的绘制段落,标题、表格等常用api

 Word07Writer writer = WordUtil.getWriter();
        // 添加段落(标题)
        DateTime dateTime = DateUtil.parseDate(month + "-01");
        String format = DateUtil.format(dateTime, "yyyy年M月");
        writer.addText(ParagraphAlignment.CENTER, new Font("方正小标宋简体", Font.BOLD, 15), StrUtil.format("{}{}抽蓄电站运行月报", format, stName));
        //添加正文
        writer.addText(ParagraphAlignment.LEFT, new Font("宋体", Font.BOLD, 10), "一、综合运行数据");
        List<Entity> table = new ArrayList<>();
        for (int i = 0; i < itemList.size(); i++) {
            Entity entity = Entity.create();
            entity.set("指标", itemList.get(i));
            entity.set("单位", unit.get(i));
            switch (i) {
                case 0:
                    entity.set("数值", result.getStr("机端发电量"));
                    break;
                case 1:
                    entity.set("数值", result.getStr("机端抽水电量"));
                    break;
                case 2:
                    entity.set("数值", result.getStr("发电次数"));
                    break;
                default:
                    entity.set("数值", result.getStr(itemList.get(i)));
            }
            entity.set("备注", beizhuList.get(i));
            table.add(entity);
        }
        XWPFTable xwpfTable = TableUtil.createTable(writer.getDoc(), table);

        // 遍历所有行
        for (XWPFTableRow row : xwpfTable.getRows()) {
            row.setHeight(500);
            row.setCantSplitRow(true);
            // 遍历行中的所有单元格
            for (XWPFTableCell cell : row.getTableCells()) {
                cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);//垂直居中
                //设置宽度
                cell.getCTTc().addNewTcPr().addNewTcW().setW(BigInteger.valueOf(100 * 25)); // 100磅转换为EMUs

                CTTc cttc = cell.getCTTc();
                CTP ctp = cttc.getPList().get(0);
                CTPPr ctppr = ctp.getPPr();
                if (ctppr == null) {
                    ctppr = ctp.addNewPPr();
                }
                CTJc ctjc = ctppr.getJc();
                if (ctjc == null) {
                    ctjc = ctppr.addNewJc();
                }
                ctjc.setVal(STJc.CENTER); //水平居中
            }
        }

效果图

效果还是很不错的,相关打码了

在这里插入图片描述

参考资料

  • hutool
  • 博客园

http://www.kler.cn/a/385423.html

相关文章:

  • GCC和clang的爱恨情仇
  • 【Linux系统】—— 基本指令(二)
  • SpringBoot实现的企业资产管理系统
  • 纯C++信号槽使用Demo (sigslot 库使用)
  • PyQt入门指南四十六 性能优化策略
  • AntPathMatcher 技术文档
  • Affinity part 2 - 系统拓扑结构和控制亲和性
  • 气膜场馆:推动体育文化旅游创新发展的关键力量—轻空间
  • 支付宝与华为终端联手,移动支付即将进入“碰时代”
  • 掌握springboot过滤器,拦截器 ,aop
  • 宠物空气净化器哪家好?希喂、安德迈、霍尼韦尔除毛能力测评
  • 量化交易系统开发-实时行情自动化交易-数据的种类
  • 深入理解Java中的接口
  • C#中的可空类型是什么?
  • 渗透测试---Linux基础(二)(完结版)
  • 【芯智雲城】RICHTEK立锜科技23V降压转换器
  • QinQ VLAN技术
  • 速盾:怎么使用cdn加速?
  • qt for android 控制系统的不同音量
  • Python 微服务架构