WORD替换指定内容+WORD转换成HTML
来源:互联网 发布:淘宝网买东西流程 编辑:程序博客网 时间:2024/06/04 21:57
WORD替换指定内容、WORD转成HTML主要片段代码
1、WORD按${key}格式指定替换内容
/*** 格式:${key} */public static boolean replaceAndGenerateWord(String srcPath, String destPath, Map<String, Object> map) throws Exception{ String[] sp = srcPath.split("\\."); String[] dp = destPath.split("\\."); if ((sp.length > 0) && (dp.length > 0)) { // WORD2007 if (sp[sp.length - 1].equalsIgnoreCase("docx")) { XWPFDocument document = new XWPFDocument( POIXMLDocument.openPackage(srcPath)); Iterator<XWPFParagraph> itPara = document.getParagraphsIterator(); while (itPara.hasNext()) { XWPFParagraph paragraph = (XWPFParagraph) itPara.next(); List<XWPFRun> runs = paragraph.getRuns(); for (int i = 0; i < runs.size(); i++) { String oneparaString = runs.get(i).toString(); if(oneparaString.contains("${")&&oneparaString.contains("}")){//${key} //oneparaString = oneparaString.replace("${", "").replace("}", ""); for (Map.Entry<String, Object> entry : map.entrySet()) { if(oneparaString.contains("${"+entry.getKey()+"}")){ oneparaString = oneparaString.replace( "${"+entry.getKey()+"}", entry.getValue()==null?"":entry.getValue().toString()); } } runs.get(i).setText(oneparaString, 0); }else if(oneparaString.contains("${")&&!oneparaString.contains("}")){//${ String comparekey = ""; int pos = 0; comparekey+=oneparaString.substring(oneparaString.indexOf("${"), oneparaString.length()).replace("${", ""); for (int j = i+1; j < runs.size(); j++) { if(runs.get(j).toString().contains("}")){ String str = runs.get(j).toString(); comparekey+=str.substring(0, str.indexOf("}")); pos = j; break; }else{ comparekey+=runs.get(j).toString(); } } for (Map.Entry<String, Object> entry : map.entrySet()) { if(comparekey.equals(entry.getKey())){ comparekey = comparekey.replace( entry.getKey(), entry.getValue()==null?"":entry.getValue().toString()); } } for(int k=i;k<=pos;k++){ if(k==i){ runs.get(k).setText(comparekey, 0); }else{ runs.get(k).setText("", 0); } } }else if(oneparaString.contains("$")&&!oneparaString.contains("${")){//$ String comparekey = ""; int pos = 0; for (int j = i+1; j < runs.size(); j++) { String str = runs.get(j).toString(); if(str.contains("{")&&str.contains("}")){ comparekey+=str.substring(str.indexOf("{"), str.indexOf("}")).replace("{", ""); pos = j; break; }else if(str.contains("{")&&!str.contains("}")){ comparekey+=str.substring(str.indexOf("{"),str.length()).replace("{", ""); }else if(!str.contains("{")&&str.contains("}")){ comparekey+=str.substring(0,str.indexOf("}")); pos = j; break; }else{ comparekey+=str; } } for (Map.Entry<String, Object> entry : map.entrySet()) { if(comparekey.equals(entry.getKey())){ comparekey = comparekey.replace( entry.getKey(), entry.getValue()==null?"":entry.getValue().toString()); } } for(int k=i;k<=pos;k++){ if(k==i){ runs.get(k).setText(comparekey, 0); }else{ runs.get(k).setText("", 0); } } } } } // 表格 Iterator<XWPFTable> itTable = document.getTablesIterator(); while (itTable.hasNext()) { XWPFTable table = (XWPFTable) itTable.next(); int rcount = table.getNumberOfRows(); for (int i = 0; i < rcount; i++) { XWPFTableRow row = table.getRow(i); List<XWPFTableCell> cells = row.getTableCells(); for (XWPFTableCell cell : cells) { String cellTextString = cell.getText(); for (Entry<String, Object> e : map.entrySet()) { if (cellTextString.contains(e.getKey())) cellTextString = cellTextString.replace(e.getKey(),e.getValue()==null?"":e.getValue().toString()); } cell.removeParagraph(0); cell.setText(cellTextString); } } } FileOutputStream outStream = null; outStream = new FileOutputStream(destPath); document.write(outStream); outStream.close(); return true; } else if ((sp[sp.length - 1].equalsIgnoreCase("doc")) && (dp[dp.length - 1].equalsIgnoreCase("doc"))) { //WORD2003 HWPFDocument document = null; document = new HWPFDocument(new FileInputStream(srcPath)); Range range = document.getRange(); //执行替换目次损坏,未找到解决方法 for (Map.Entry<String, Object> entry : map.entrySet()) { range.replaceText("${"+entry.getKey()+"}", entry.getValue()==null?"":entry.getValue().toString()); } FileOutputStream outStream = null; outStream = new FileOutputStream(destPath); document.write(outStream); outStream.close(); return true; } else { return false; } } else { return false; } }
public class PoiWordToHtmlUtil {public static void PoiWordToHtml(String fileSrcPath,String srcfileName,String fileDesPath,String desHtmlName) throws Exception{String[] sp = srcfileName.split("\\."); if (sp.length > 0) {// 判断文件有无扩展名 if (sp[sp.length - 1].equalsIgnoreCase("docx")) { docxToHtml(fileSrcPath,srcfileName,fileDesPath,desHtmlName); }else if ((sp[sp.length - 1].equalsIgnoreCase("doc"))){ docToHtml(fileSrcPath,srcfileName,fileDesPath,desHtmlName); } }}/** * word2003转html * @param fileSrcPath * @param fileName * @param fileDesPath * @param desHtmlName * @throws Exception */public static void docToHtml(String fileSrcPath,String srcfileName,String fileDesPath,String desHtmlName) throws Exception{InputStream input = new FileInputStream(fileSrcPath + srcfileName);HWPFDocument wordDocument = new HWPFDocument(input);WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument());wordToHtmlConverter.setPicturesManager(new PicturesManager() {public String savePicture(byte[] content, PictureType pictureType, String suggestedName, float arg3, float arg4) {return suggestedName;}});wordToHtmlConverter.processDocument(wordDocument);List<Picture> pics = wordDocument.getPicturesTable().getAllPictures();if (pics != null) {for (int i = 0; i < pics.size(); i++) {Picture pic = pics.get(i);try {pic.writeImageContent(new FileOutputStream(fileSrcPath + pic.suggestFullFileName()));} catch (FileNotFoundException e) {e.printStackTrace();}}}Document htmlDocument = wordToHtmlConverter.getDocument();ByteArrayOutputStream outStream = new ByteArrayOutputStream();DOMSource domSource = new DOMSource(htmlDocument);StreamResult streamResult = new StreamResult(outStream);TransformerFactory tf = TransformerFactory.newInstance();Transformer serializer = tf.newTransformer();serializer.setOutputProperty(OutputKeys.ENCODING, "GBK");serializer.setOutputProperty(OutputKeys.INDENT, "yes");serializer.setOutputProperty(OutputKeys.METHOD, "html");serializer.transform(domSource, streamResult);outStream.close();String content = new String(outStream.toByteArray());FileUtils.writeStringToFile(new File(fileDesPath, desHtmlName), content, "GBK");}/** * word2007转html * @param fileSrcPath * @param fileName * @param fileDesPath * @param desHtmlName * @throws Exception */public static void docxToHtml(String fileSrcPath,String srcfileName,String fileDesPath,String desHtmlName) throws Exception{ InputStream in = new FileInputStream(fileSrcPath + srcfileName); XWPFDocument document = new XWPFDocument(in); File imageFolderFile = new File(fileSrcPath+"/img/"); XHTMLOptions options = XHTMLOptions.create().URIResolver(new FileURIResolver(imageFolderFile)); options.setExtractor(new FileImageExtractor(imageFolderFile)); OutputStream out = new FileOutputStream(new File(fileDesPath+desHtmlName)); XHTMLConverter.getInstance().convert(document, out, options); }}
3、相关包
相关包:POI3.9涉及包下载
阅读全文
0 0
- WORD替换指定内容+WORD转换成HTML
- Word转换成Html
- word转换成html
- 使用poi动态替换word指定文本内容
- java word转换成html
- C# word转换成HTML
- word&excel转换成html
- word批量转换成html
- 使用python把pdf转换为word然后替换word中的文字内容
- 从Word中读取内容&将word转换成txt
- word转换html
- C#把Word文档转换成HTML
- 如何把word文档转换成html
- 将WORD文件转换成HTML文件
- Word转换成Html或Xml
- jacob读取word excel,转换成html
- 把word,excel转换成 Html
- C# 将Word,Excel转换成Html
- Ajax跨域(jsonp) 调用JAVA后台
- 语音训练营
- C++基础:各种输入方法总结,cin、cin.get()、cin.getline()、getline()、gets()、getchar()
- Android 使用Android studio实现第三方QQ登录
- oracle_install
- WORD替换指定内容+WORD转换成HTML
- adb 常用命令
- union-find
- LeetCode:Palindrome Number(回文判断)
- layui获取下拉列表select的值
- Spring Cloud 入门(2)-- 编写服务消费者
- 数据分析,化解2017年焦虑的最后一课
- 隐马尔科夫模型 python 实现简单拼音输入法
- Windows下搭建Android开发环境