博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 读写word java 动态写入 模板文件
阅读量:5924 次
发布时间:2019-06-19

本文共 4435 字,大约阅读时间需要 14 分钟。

hot3.png

import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import org.apache.poi.hwpf.HWPFDocument;import org.apache.poi.hwpf.model.FieldsDocumentPart;import org.apache.poi.hwpf.usermodel.Field;import org.apache.poi.hwpf.usermodel.Fields;import org.apache.poi.hwpf.usermodel.Paragraph;import org.apache.poi.hwpf.usermodel.Range;import org.apache.poi.hwpf.usermodel.Table;import org.apache.poi.hwpf.usermodel.TableCell;import org.apache.poi.hwpf.usermodel.TableIterator;import org.apache.poi.hwpf.usermodel.TableRow;/** * @author zhangchaochao * @date 2015-12-4上午10:30:59 */public class MSWordPoi4  {            /**     * @param args     */      public static void main(String[] args)      {          Map
 map = new HashMap
();          map.put("${sub}", "湖南大学");          map.put("${item2.school}", "湖南大学");          map.put("${item2.address}", "湖南");  //        map.put("${item1.name}", "王五1");  //        map.put("${item1.numberStudent}", "编号002");  //        map.put("${item1.sex}", "男2");  //        map.put("${item1.age}", "19");          String srcPath = "D:\\铸造工艺卡.doc";          readwriteWord(srcPath, map);      }            /**     * 实现对word读取和修改操作     *      * @param filePath     *            word模板路径和名称     * @param map     *            待填充的数据,从数据库读取     */      public static void readwriteWord(String filePath, Map
 map)      {          // 读取word模板          // String fileDir = new          // File(base.getFile(),"http://www.cnblogs.com/http://www.cnblogs.com/../doc/").getCanonicalPath();          FileInputStream in = null;          try          {              in = new FileInputStream(new File(filePath));          }          catch (FileNotFoundException e1)          {              e1.printStackTrace();          }          HWPFDocument hdt = null;          try          {              hdt = new HWPFDocument(in);          }          catch (IOException e1)          {              e1.printStackTrace();          }          Fields fields = hdt.getFields();          Iterator
 it = fields.getFields(FieldsDocumentPart.MAIN)                  .iterator();          while (it.hasNext())          {              System.out.println(it.next().getType());          }                    //读取word文本内容          Range range = hdt.getRange();          TableIterator tableIt = new TableIterator(range);           //迭代文档中的表格          int ii = 0;          while (tableIt.hasNext()) {                Table tb = (Table) tableIt.next();                ii++;              System.out.println("第"+ii+"个表格数据...................");              //迭代行,默认从0开始              for (int i = 0; i < tb.numRows(); i++) {                    TableRow tr = tb.getRow(i);                    //只读前8行,标题部分                  if(i >=8) break;                  //迭代列,默认从0开始                  for (int j = 0; j < tr.numCells(); j++) {                        TableCell td = tr.getCell(j);//取得单元格                      //取得单元格的内容                      for(int k=0;k
 entry : map.entrySet())          {              range.replaceText(entry.getKey(), entry.getValue());          }          ByteArrayOutputStream ostream = new ByteArrayOutputStream();          String fileName = "" + System.currentTimeMillis();          fileName += ".doc";          FileOutputStream out = null;          try          {              out = new FileOutputStream("D:/" + fileName, true);          }          catch (FileNotFoundException e)          {              e.printStackTrace();          }          try          {              hdt.write(ostream);          }          catch (IOException e)          {              e.printStackTrace();          }          // 输出字节流          try          {              out.write(ostream.toByteArray());          }          catch (IOException e)          {              e.printStackTrace();          }          try          {              out.close();          }          catch (IOException e)          {              e.printStackTrace();          }          try          {              ostream.close();          }          catch (IOException e)          {              e.printStackTrace();          }      }  }

 

转载于:https://my.oschina.net/u/2539482/blog/539352

你可能感兴趣的文章
@Transactional noRollbackFor
查看>>
js 编码解码
查看>>
C# 操作 access 数据库
查看>>
MAC OSX 中,删除右键菜单中的多余重复项。
查看>>
Linux服务-http
查看>>
模板方法模式---考题抄错会做也白搭
查看>>
WebService系列一:WebService简介
查看>>
log4net的相关使用笔记
查看>>
import ... from和import {} from 的区别
查看>>
Mysql数据库
查看>>
HDU 1010 Tempter of the Bone
查看>>
Exception in thread "main" java.lang.NoClassDefFoundError错误总结
查看>>
asp.net identity 介绍
查看>>
AC日记——最长最短单词 openjudge 1.7 25
查看>>
去重排序
查看>>
Windows Azure革新——Caching(预览)
查看>>
Windows Azure 安全最佳实践 - 第 4 部分:需要采取的其他措施
查看>>
maven pom.xml加载不同properties配置
查看>>
Linux定时任务
查看>>
查看Eclipse版本号,及各个版本区别
查看>>