-
POI往Word中插入字符串我的实践
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
代码
package lili.com;
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.extractor.WordExtractor;
import org.apache.poi.hwpf.model.StyleSheet;
import org.apache.poi.hwpf.usermodel.CharacterProperties;
import org.apache.poi.hwpf.usermodel.CharacterRun;
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;
import org.apache.poi.poifs.filesystem.DirectoryEntry;
import org.apache.poi.poifs.filesystem.DocumentEntry;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
public class POITest
{
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/** *//**
* @param args
* @throws Exception
*/
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public static void main(String[] args) throws Exception
{
// TODO Auto-generated method stub
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
try
{
FileInputStream in = new FileInputStream(new File("E:\\demo1.doc"));
POIFSFileSystem pfs = new POIFSFileSystem(in);
HWPFDocument hwpf = new HWPFDocument(pfs);
Range range = hwpf.getRange();
StyleSheet styleSheet = hwpf.getStyleSheet();
TableIterator it = new TableIterator(range);
// 遍历一个DOC中的所有表格
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
while (it.hasNext())
{
Table tb = (Table) it.next();
System.out.println(tb.numRows());
// 遍历表格的行
// for (int i = 0; i < tb.numRows(); i++) {
// TableRow tr = tb.getRow(i);
// // 遍历表格的列
// System.out.println(tr.numCells());
// for (int j = 0; j < tr.numCells(); j++) {
// // 往表格中插入数据
// TableCell td = tr.getCell(j);
// // CharacterRun chr1= td.getCharacterRun(0);
// // System.out.println("td--"+chr1.getFontName());
//
// String text = "第" + i + "行第" + j + "列";
//
// int p = td.numParagraphs();
// System.out.println("td.numParagraphs :"+p);
// for(int a=0;a<p;a++)
// {
// Paragraph para =td.getParagraph(a);
// para.insertBefore(text+" ");
// /// para.insertAfter(text);
// int q=para.numCharacterRuns();
// System.out.println("numCharacterRuns--"+q);
// for(int b=0;b<q;b++)
// {
// CharacterRun chr= para.getCharacterRun(b);
//
// System.out.println("para.getCharacterRun-- "+ chr.getFontName()+" text--"+chr.text().trim()+" str--"+chr.toString());
//
// // ParagraphProperties pp = new ParagraphProperties();
//
// // if(j%2==0){
//
// // }
// }
// }
// }
// }
}
// WordExtractor we=new WordExtractor(in);
String text=range.text();
System.out.println(text);
// 在表格外面插入内容
CharacterProperties cp = new CharacterProperties();
cp.setBold(true);
cp.setCharacterSpacing(10);
cp.setChse(cp.SPRM_CHARSCALE);
cp.setCapitalized(true);
int p=range.numParagraphs();
for(int i=0;i<p;i++)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
String name="飞舞";
String age="23";
Paragraph para=range.getParagraph(i);
// System.out.println(p);
// para.insertAfter("--插入 成功!!",cp);
para.replaceText("姓名:————————————","姓名:"+name);
para.replaceText("年龄:————————————","年龄:"+age);
CharacterRun chr=para.getCharacterRun(0);
System.out.println("第"+i+"段: "+chr.text());
}
System.out.println("\n插入后 生成新文档demo1-----------------------------------------\n");
text=range.text();
System.out.println(text);
// File outputFile = new File("C:/456.doc");
// OutputStream output = new FileOutputStream(outputFile);
// hwpf.write(output);
// output.close();
//
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
// byte b[] = content.getBytes("ISO-8859-1");
// String content="这是固定的字符2";
byte b[] = text.getBytes();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
ByteArrayInputStream bais = new ByteArrayInputStream(b);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
POIFSFileSystem fs = new POIFSFileSystem();
DirectoryEntry directory = fs.getRoot();
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
DocumentEntry de = directory.createDocument("WordDocument", bais);
FileOutputStream ostream = new FileOutputStream("e:/demo.doc");
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
fs.writeFilesystem(ostream);
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
bais.close();
ostream.close();
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
} catch (Exception ex)
{
ex.printStackTrace();
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
-
相关阅读:
[概述]移动机器人自主探索
MRPT编译
Kinect2.0相机标定
小豆包的学习之旅:里程计运动模型
小豆包的学习之旅:入门篇
Kinect2.0点云数据获取
COFF,amd64.vc90.mfc两个布署的问题
[硬件]Robot运动控制
[硬件]Urg_viewer数据读取
[硬件]三维点云数据获取
-
原文地址:https://www.cnblogs.com/monica/p/1604703.html
Copyright © 2020-2023
润新知