java 导出word使用wps可以打开microsoft word无法打开的问题

之前在项目中做了一个word的导出功能,正常使用wps测试和在线等方式都通过,一段时间后客户发来询问说不能打开,使用的是microsoft word工具,当即下载了一个果然不能打开报错

错误如下:

macos

macos的错误提醒

windows

在这里插入图片描述

百思不解我去查了很多资料 有说是因为编码的,有说是因为模版里面有错误导致的,排查了都不是

最后解决思路 因为我导出的是docx 尝试导出为doc

将我原本的代码直接后缀改为doc导出失败 因为版本不匹配,以下为解决流程:
1、重新去用微软的word工具 打开导出模版为2023xml;
在这里插入图片描述
2、将导出docx改为doc,然后成功打开;
3、附上代码:

public static void main(String[] args) throws IOException, TemplateException {
        // 配置FreeMarker
        Configuration cfg = new Configuration(Configuration.VERSION_2_3_25);
        cfg.setDirectoryForTemplateLoading(new File("/templates/word")); // 设置模板目录
        cfg.setDefaultEncoding("UTF-8");

        // 加载模板
        Template template = cfg.getTemplate("test.xml");

        // 准备填充的数据
        Map<String, Object> data = new HashMap<>();
        data.put("variableName", "value"); // 这里的"variableName"是在XML模板中定义的变量名

        // 生成Word文档
        File docFile = new File("/word/document.doc");
        try (FileWriter writer = new FileWriter(docFile)) {
            template.process(data, writer);
        }
    }

好了功能改完了可以正常使用

后来我还是不甘心想导出为docx

又是一顿研究
直接附上代码

public static void main(String[] args) throws IOException {
        // 创建一个新的Word文档
        XWPFDocument document = new XWPFDocument();

        // 创建段落
        XWPFParagraph paragraph = document.createParagraph();
        XWPFRun run = paragraph.createRun();
        run.setText("Hello, World!");

        // 保存文档到指定路径
        FileOutputStream out = new FileOutputStream("path/to/output/document.docx");
        document.write(out);
        out.close();

        // 关闭文档
        document.close();
    }

总结:想使用微软word 打开导出docx 只能去使用Apache POI是一个用于处理Microsoft Office文档的java库;

  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值