
版权声明:本文为博主原创文章,未经博主允许不得转载。
- /*
- * 文 件 名: MSWordPoi4.<a href="http://lib.youkuaiyun.com/base/17" class="replace_word" title="Java EE知识库" target="_blank" style="color:#df3434; font-weight:bold;">java</a>
- * 版 权: Sunny Technologies Co., Ltd. Copyright YYYY-YYYY, All rights reserved
- * 描 述: <描述>
- * 修 改 人: L.Hao
- * 修改时间: 2014-8-8
- * 跟踪单号: <跟踪单号>
- * 修改单号: <修改单号>
- * 修改内容: <修改内容>
- */
- package com.test;
- /**
- * <一句话功能简述>
- * <功能详细描述>
- *
- * @author L.Hao
- * @version [版本号, 2014-8-8]
- * @see [相关类/方法]
- * @since [产品/模块版本]
- */
- 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;
- public class MSWordPoi4
- {
- /**
- * @param args
- */
- public static void main(String[] args)
- {
- Map<String, String> map = new HashMap<String, String>();
- 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:\\temp\\铸造工艺卡.doc";
- readwriteWord(srcPath, map);
- }
- /**
- * 实现对word读取和修改操作
- *
- * @param filePath
- * word模板路径和名称
- * @param map
- * 待填充的数据,从<a href="http://lib.youkuaiyun.com/base/14" class="replace_word" title="MySQL知识库" target="_blank" style="color:#df3434; font-weight:bold;">数据库</a>读取
- */
- public static void readwriteWord(String filePath, Map<String, String> 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<Field> 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<td.numParagraphs();k++){
- Paragraph para =td.getParagraph(k);
- String s = para.text();
- System.out.println(s);
- } //end for
- } //end for
- } //end for
- } //end while
- //System.out.println(range.text());
- // 替换文本内容
- for (Map.Entry<String, String> 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("F:/" + 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();
- }
- }
- }
所使用到的jar是:
-
顶
- 2
-
踩
- 1