/**
* @param srcPath:上传文件路径
* @param destPath:保存文件路径
* @param map:替换内容key对应word文档替换的值,value是替换内容。
* 例:map.put("title", "内容");
* @author xiaojian
*
*/
public class ReadAndWriteDoc {
public static void searchAndReplace(String srcPath, String destPath,Map<String, String> map) {
try {
XWPFDocument document = new XWPFDocument(POIXMLDocument.openPackage(srcPath));
/**
* 替换段落中的指定文字
*/
Iterator<XWPFParagraph> itPara = document.getParagraphsIterator();
while (itPara.hasNext()) {
XWPFParagraph paragraph = (XWPFParagraph) itPara.next();
Set<String> set = map.keySet();
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()) {
String key = iterator.next();
List<XWPFRun> run=paragraph.getRuns();
for(int i=0;i<run.size();i++)
{
if(run.get(i).getText(run.get(i).getTextPosition())!=null &&
run.get(i).getText(run.get(i).getTextPosition()).equals(key))
{
/**
* 参数0表示生成的文字是要从哪一个地方开始放置,设置文字从位置0开始
* 就可以把原来的文字全部替换掉了
*/
run.get(i).setText(map.get(key),0);
}
}
}
}
/**
* 替换表格中的指定文字
*/
Iterator<XWPFTable> itTable = document.getTablesIterator();
/*CharacterProperties props = new CharacterProperties();
props.setFontSize(6); */
while (itTable.hasNext()) {
XWPFTable table = (XWPFTable) itTable.next();
int count = table.getNumberOfRows();
for (int i = 0; i < count; i++) {
XWPFTableRow row = table.getRow(i);
List<XWPFTableCell> cells = row.getTableCells();
for (XWPFTableCell cell : cells) {
for (Entry<String, String> e : map.entrySet()) {
//System.out.print(cell.getText());
if (cell.getText().equals(e.getKey())) {
/**
* 设置特殊内容的字体大小
*/
if (cell.getText().equals("公出事由:gcsy")) {
cell.removeParagraph(0);
XWPFParagraph pIO = cell.addParagraph();
XWPFRun rIO = pIO.createRun();
rIO.setFontSize(11);
rIO.setText(e.getValue());
//cell.setText();
}else if(cell.getText().equals("合计人民币(大写)dx¥qs")) {
cell.removeParagraph(0);
XWPFParagraph pIO = cell.addParagraph();
XWPFRun rIO = pIO.createRun();
rIO.setFontSize(11);
rIO.setText(e.getValue());
}else if(cell.getText().equals("备注bz")){
cell.removeParagraph(0);
XWPFParagraph pIO = cell.addParagraph();
XWPFRun rIO = pIO.createRun();
rIO.setFontSize(11);
rIO.setText(e.getValue());
}else {
cell.removeParagraph(0);
cell.setText(e.getValue());
/**
* 设置word文档水平居中
*/
CTTc cttc = cell.getCTTc();
CTP ctp = cttc.getPList().get(0);
CTPPr ctppr = ctp.getPPr();
if (ctppr == null) {
ctppr = ctp.addNewPPr();
}
CTJc ctjc = ctppr.getJc();
if (ctjc == null) {
ctjc = ctppr.addNewJc();
}
ctjc.setVal(STJc.CENTER); //水平居中
}
}
}
}
}
}
FileOutputStream outStream = null;
outStream = new FileOutputStream(destPath);
document.write(outStream);
outStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
* @param srcPath:上传文件路径
* @param destPath:保存文件路径
* @param map:替换内容key对应word文档替换的值,value是替换内容。
* 例:map.put("title", "内容");
* @author xiaojian
*
*/
public class ReadAndWriteDoc {
public static void searchAndReplace(String srcPath, String destPath,Map<String, String> map) {
try {
XWPFDocument document = new XWPFDocument(POIXMLDocument.openPackage(srcPath));
/**
* 替换段落中的指定文字
*/
Iterator<XWPFParagraph> itPara = document.getParagraphsIterator();
while (itPara.hasNext()) {
XWPFParagraph paragraph = (XWPFParagraph) itPara.next();
Set<String> set = map.keySet();
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()) {
String key = iterator.next();
List<XWPFRun> run=paragraph.getRuns();
for(int i=0;i<run.size();i++)
{
if(run.get(i).getText(run.get(i).getTextPosition())!=null &&
run.get(i).getText(run.get(i).getTextPosition()).equals(key))
{
/**
* 参数0表示生成的文字是要从哪一个地方开始放置,设置文字从位置0开始
* 就可以把原来的文字全部替换掉了
*/
run.get(i).setText(map.get(key),0);
}
}
}
}
/**
* 替换表格中的指定文字
*/
Iterator<XWPFTable> itTable = document.getTablesIterator();
/*CharacterProperties props = new CharacterProperties();
props.setFontSize(6); */
while (itTable.hasNext()) {
XWPFTable table = (XWPFTable) itTable.next();
int count = table.getNumberOfRows();
for (int i = 0; i < count; i++) {
XWPFTableRow row = table.getRow(i);
List<XWPFTableCell> cells = row.getTableCells();
for (XWPFTableCell cell : cells) {
for (Entry<String, String> e : map.entrySet()) {
//System.out.print(cell.getText());
if (cell.getText().equals(e.getKey())) {
/**
* 设置特殊内容的字体大小
*/
if (cell.getText().equals("公出事由:gcsy")) {
cell.removeParagraph(0);
XWPFParagraph pIO = cell.addParagraph();
XWPFRun rIO = pIO.createRun();
rIO.setFontSize(11);
rIO.setText(e.getValue());
//cell.setText();
}else if(cell.getText().equals("合计人民币(大写)dx¥qs")) {
cell.removeParagraph(0);
XWPFParagraph pIO = cell.addParagraph();
XWPFRun rIO = pIO.createRun();
rIO.setFontSize(11);
rIO.setText(e.getValue());
}else if(cell.getText().equals("备注bz")){
cell.removeParagraph(0);
XWPFParagraph pIO = cell.addParagraph();
XWPFRun rIO = pIO.createRun();
rIO.setFontSize(11);
rIO.setText(e.getValue());
}else {
cell.removeParagraph(0);
cell.setText(e.getValue());
/**
* 设置word文档水平居中
*/
CTTc cttc = cell.getCTTc();
CTP ctp = cttc.getPList().get(0);
CTPPr ctppr = ctp.getPPr();
if (ctppr == null) {
ctppr = ctp.addNewPPr();
}
CTJc ctjc = ctppr.getJc();
if (ctjc == null) {
ctjc = ctppr.addNewJc();
}
ctjc.setVal(STJc.CENTER); //水平居中
}
}
}
}
}
}
FileOutputStream outStream = null;
outStream = new FileOutputStream(destPath);
document.write(outStream);
outStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}