zl程序教程

您现在的位置是:首页 >  后端

当前栏目

java 使用POI 读写word 表格详解编程语言

JAVA编程语言 使用 详解 读写 表格 word POI
2023-06-13 09:20:30 时间

POI是apache的开源项目,其地址在http://poi.apache.org/

下面是起官方网站的标题,POI是微软文档的javaAPI

Apache POI the Java API for Microsoft Documents。

下面是一个POI读写word表格的例子:

import java.io.FileInputStream; 

import java.io.FileOutputStream; 

import java.util.HashMap; 

import java.util.Map; 

import java.util.Set; 

import org.apache.poi.hwpf.HWPFDocument; 

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 POIWordUtil { 

 public static void main(String[] args) throws Exception { 

 Map String, Text replaces = new HashMap String, Text 

 replaces.put("${username}", Text.str("rongzhi_li")); 

 replaces.put("${password}", Text.str("1123456")); 

 replaces.put("${author}", Text.str("lee")); 

 poiWordTableReplace("t1.doc", "t2.doc", replaces); 

 public static void poiWordTableReplace(String sourceFile, String newFile, 

 Map String, Text replaces) throws Exception { 

 FileInputStream in = new FileInputStream(sourceFile); 

 HWPFDocument hwpf = new HWPFDocument(in); 

 Range range = hwpf.getRange();// 得到文档的读取范围 

 TableIterator it = new TableIterator(range); 

 // 迭代文档中的表格 

 while (it.hasNext()) { 

 Table tb = (Table) it.next(); 

 // 迭代行,默认从0开始 

 for (int i = 0; i tb.numRows(); i++) { 

 TableRow tr = tb.getRow(i); 

 // 迭代列,默认从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(); 

 final String old = s; 

 for (String key : replaces.keySet()) { 

 if (s.contains(key)) { 

 s = s.replace(key, replaces.get(key).getText()); 

 if (!old.equals(s)) {// 有变化 

 para.replaceText(old, s); 

 s = para.text(); 

 System.out.println("old:" + old + "- " + "s:" + s); 

 } // end for 

 } // end for 

 } // end for 

 } // end while 

 FileOutputStream out = new FileOutputStream(newFile); 

 hwpf.write(out); 

 out.flush(); 

 out.close(); 

public abstract class Text { 

 public abstract String getText(); 

 public static Text str(final String string) { 

 return new Text() { 

 @Override 

 public String getText() { 

 return string; 

}

11002.html

cjava