java 导出word使用wps可以打开microsoft word无法打开的问题
之前在项目中做了一个word的导出功能,正常使用wps测试和在线等方式都通过,一段时间后客户发来询问说不能打开,使用的是microsoft word工具,当即下载了一个果然不能打开报错
错误如下:
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库;