JAVA操作docx文档
操作docx文件,设置需要更改的地方使用占位符,讲docx文件后缀改为.zip。打开压缩文件找到内容xml文件(我的文件路径是word\document.xml,如果有不一样的可以大神留言)。
打开xml文件如果占位符被拆分,更改xml保证占位符完整
1.打开模板文件,并下载
String fileName = "文件名";//将文件放在public资源问价夹下ClassPathResource classPathResource = new ClassPathResource("public" + File.separator + "xxx.zip");//组装占位符-值Map<String, String> map = findRecord(po);//打开zip压缩文件ZipFile zipFile = new ZipFile(classPathResource.getFile());ZipOutputStream outputStream = new ZipOutputStream(new BufferedOutputStream(response.getOutputStream()));//设置response请求头response.setContentType("application/octet-stream");response.setHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode(fileName, "UTF-8") + ".docx");//更新zip内的xml信息updateZipFile(zipFile, outputStream, "word/document.xml", map);//关流zipFile.close();outputStream.flush();outputStream.close();
updateZipFile方法
public void updateZipFile(ZipFile zipFile, ZipOutputStream zipOutputStream, String fileName, Map<String, String> params) throws IOException {//遍历压缩文件for (Enumeration e = zipFile.entries(); e.hasMoreElements(); ) {ZipEntry entryIn = (ZipEntry) e.nextElement();//将原始压缩文件中的文件,添加到输出流中zipOutputStream.putNextEntry(new ZipEntry(entryIn.getName()));InputStream is = zipFile.getInputStream(entryIn);byte[] buf = new byte[1024];int len;//判断文件是否是document.xml文件if (!entryIn.getName().equalsIgnoreCase(fileName)) {//如果不是直接添加while ((len = is.read(buf)) > 0) {zipOutputStream.write(buf, 0, (len < buf.length) ? len : buf.length);}} else {//如果是,编辑xml文件while ((len = (is.read(buf))) > 0) {//设置中文编码格式,控制中文编码解决中文转byte数组时损失String s = new String(buf, "ISO-8859-1");//遍历占位符-值,替换xml中的占位符for (Map.Entry<String, String> entry : params.entrySet()) {if (s.indexOf(entry.getKey()) != -1) {s = s.replace(entry.getKey(), new String(entry.getValue().getBytes("UTF-8"), "ISO-8859-1"));len = s.getBytes("ISO-8859-1").length;}}byte[] outByte = s.getBytes("ISO-8859-1");//添加到输出流zipOutputStream.write(outByte, 0, (len < outByte.length) ? len : outByte.length);}}//关流is.close();}}
JAVA操作docx文档相关推荐
- Java操作word文档将docx转换为pdf格式
Java操作word文档将docx转换为pdf格式 一.整体说明 在上传 Office 课件时,格式有:doc,docx,xls,xlsx,ppt,pptx,程序需要将其 转换成 pdf 格式, 才能 ...
- pythondocx模板_python操作docx文档(转)
关于python操作docx格式文档,我用到了两个python包,一个便是python-docx包,另一个便是python-docx-template;,同时我也用到了很出名的一个工具"pa ...
- Python操作docx文档设置居中并创建表格
功能描述:本文代码使用python-docx操作docx文档,添加一段文字并设置居中对齐,添加一个表格并为所有单元格设置文字. from docx import Document from docx. ...
- Java操作Word文档
Java 生成 Word 的几种方案 参考 主要有这么一些工具可以使用 Jacob.Apache POI.Java2word.iText,还有一种方法是使用XML作为模板. 使用 XML 的思 ...
- Java web--利用java操作excel文档
在web应用程序的开发中,如果需要将Excel文档中的信息导入数据库或将数据库的信息导出到Excel文档中,需要应用程序访问Excel文件.目前,操作Excel文档的java组件主要有Jxl和POI两 ...
- java操作word文档(文字,图片,表格添加以及替换操作)
注:本文由于个人工作需要,有对多个他人博文进行借鉴,但是多数博文都只是讲到了小部分,例如图片/表格的操作,都只有根据书签进行替换,比较片面,本人有总结到根据文字进行图片/表格的替换,希望可以帮到更多有 ...
- Java 操作 word 文档 (三)段落Paragraphs,文本加粗、斜体、字体、字体大小、复杂文本
目录 1.段落标签 2.引入 docx4j 2.1 引入 docx4j 的 maven 依赖 2.2 加载文档 2.3 获取段落中的文本 3.<w:r> 的属性 4.设置文本字体与大小 4 ...
- spire.doc 让java操作word文档更简单优雅
Spire.Doc for Java 是一款专业的 Java Word 组件,开发人员使用它可以轻松地将 Word 文档创建.读取.编辑.转换和打印等功能集成到自己的 Java 应用程序中.作为一款完 ...
- C# 操作docx文档
一.需要引用DocX类库文件,可以直接在NuGet中找到. 二.创建文件,并添加一张表格 public static string fileName = AppDomain.CurrentDomain ...
- Java操作Word文档添加水印(文字/图片)
水印是一种常用于各种文档的声明.防伪手段,一般可设置文字水印或者加载图片作为水印.以下内容将分享通过Java编程给Word文档添加水印效果的方法. 使用工具:Free Spire.Doc for Ja ...
最新文章
- 数字图像基本处理算法小结
- JVM---执行引擎
- smartfoxserver 个人心得
- 树莓派:django,uwsgi,nginx安装与设置
- python中csv文件通过什么表示字符_python – 如果行包含CSV文件中的字符串,则删除该行...
- win2008 mysql_mysql5.7.17在win2008R2的64位系统安装与配置实例
- Codeforces 1167E 尺取法
- 【MiniSTM32_HAL库版本_V1.0】实验1跑马灯代码解释(超详细,适合初识STM32的朋友)
- java crc8_Crc8算法
- 领域驱动模型设计(一)
- Codechef April Challenge 2019 游记
- Word 分节设置不同起始页码
- oracle cogs 科目,OM模块关于COGS的生成
- STAF 删除文件操作
- 十大优秀编程项目,让你的简历金光闪闪
- 沉痛悼念游戏开发技术专家毛星云(网名“浅墨”)
- 用山脊图展示后验分布
- 定语状语异同 限定和修饰关系 句子结构(修饰和被修饰)
- 苹果cmsv10仿91美剧网自适应收录好的免费模板
- Spring Cloud 入门教程(二): 配置管理