POI读取word转换html

合集下载

java使用POI操作XWPFDocument生成Word实战(一)

java使用POI操作XWPFDocument生成Word实战(一)

java使⽤POI操作XWPFDocument⽣成Word实战(⼀)注:我使⽤的word 2016功能简介:(1)使⽤jsoup解析html得到我⽤来⽣成word的⽂本(这个你们可以忽略)(2)⽣成word、设置页边距、设置页脚(页码),设置页码(⽂本)⼀、解析htmlDocument doc = Jsoup.parseBodyFragment(contents);Element body = doc.body();Elements es = body.getAllElements();⼆、循环Elements获取我需要的html标签boolean tag = false;for (Element e : es) {//跳过第⼀个(默认会把整个对象当做第⼀个)if(!tag) {tag = true;continue;}//创建段落:⽣成word(核⼼)createXWPFParagraph(docxDocument,e);}三、⽣成段落/*** 构建段落* @param docxDocument* @param e*/public static void createXWPFParagraph(XWPFDocument docxDocument, Element e){XWPFParagraph paragraph = docxDocument.createParagraph();XWPFRun run = paragraph.createRun();run.setText(e.text());run.setTextPosition(35);//设置⾏间距if(e.tagName().equals("titlename")){paragraph.setAlignment(ParagraphAlignment.CENTER);//对齐⽅式run.setBold(true);//加粗run.setColor("000000");//设置颜⾊--⼗六进制run.setFontFamily("宋体");//字体run.setFontSize(24);//字体⼤⼩}else if(e.tagName().equals("h1")){addCustomHeadingStyle(docxDocument, "标题 1", 1);paragraph.setStyle("标题 1");run.setBold(true);run.setColor("000000");run.setFontFamily("宋体");run.setFontSize(20);}else if(e.tagName().equals("h2")){addCustomHeadingStyle(docxDocument, "标题 2", 2);paragraph.setStyle("标题 2");run.setBold(true);run.setColor("000000");run.setFontFamily("宋体");run.setFontSize(18);}else if(e.tagName().equals("h3")){addCustomHeadingStyle(docxDocument, "标题 3", 3);paragraph.setStyle("标题 3");run.setBold(true);run.setColor("000000");run.setFontFamily("宋体");run.setFontSize(16);}else if(e.tagName().equals("p")){//内容paragraph.setAlignment(ParagraphAlignment.BOTH);//对齐⽅式paragraph.setIndentationFirstLine(WordUtil.ONE_UNIT);//⾸⾏缩进:567==1厘⽶run.setBold(false);run.setColor("001A35");run.setFontFamily("宋体");run.setFontSize(14);//run.addCarriageReturn();//回车键}else if(e.tagName().equals("break")){paragraph.setPageBreak(true);//段前分页(ctrl+enter)}四、设置页边距/*** 设置页边距 (word中1厘⽶约等于567)* @param document* @param left* @param top* @param right* @param bottom*/public static void setDocumentMargin(XWPFDocument document, String left,String top, String right, String bottom) {CTSectPr sectPr = document.getDocument().getBody().addNewSectPr();CTPageMar ctpagemar = sectPr.addNewPgMar();if (StringUtils.isNotBlank(left)) {ctpagemar.setLeft(new BigInteger(left));}if (StringUtils.isNotBlank(top)) {ctpagemar.setTop(new BigInteger(top));}if (StringUtils.isNotBlank(right)) {ctpagemar.setRight(new BigInteger(right));}if (StringUtils.isNotBlank(bottom)) {ctpagemar.setBottom(new BigInteger(bottom));}}五、创建页眉/*** 创建默认页眉** @param docx XWPFDocument⽂档对象* @param text 页眉⽂本* @return返回⽂档帮助类对象,可⽤于⽅法链调⽤* @throws XmlException XML异常* @throws IOException IO异常* @throws InvalidFormatException ⾮法格式异常* @throws FileNotFoundException 找不到⽂件异常*/public static void createDefaultHeader(final XWPFDocument docx, final String text){CTP ctp = CTP.Factory.newInstance();XWPFParagraph paragraph = new XWPFParagraph(ctp, docx);ctp.addNewR().addNewT().setStringValue(text);ctp.addNewR().addNewT().setSpace(SpaceAttribute.Space.PRESERVE);CTSectPr sectPr = docx.getDocument().getBody().isSetSectPr() ? docx.getDocument().getBody().getSectPr() : docx.getDocument().getBody().addNewSectPr(); XWPFHeaderFooterPolicy policy = new XWPFHeaderFooterPolicy(docx, sectPr);XWPFHeader header = policy.createHeader(STHdrFtr.DEFAULT, new XWPFParagraph[] { paragraph });header.setXWPFDocument(docx);}}六、创建页脚/*** 创建默认的页脚(该页脚主要只居中显⽰页码)** @param docx* XWPFDocument⽂档对象* @return返回⽂档帮助类对象,可⽤于⽅法链调⽤* @throws XmlException* XML异常* @throws IOException* IO异常*/public static void createDefaultFooter(final XWPFDocument docx) {// TODO 设置页码起始值CTP pageNo = CTP.Factory.newInstance();XWPFParagraph footer = new XWPFParagraph(pageNo, docx);CTPPr begin = pageNo.addNewPPr();begin.addNewPStyle().setVal(STYLE_FOOTER);begin.addNewJc().setVal(STJc.CENTER);pageNo.addNewR().addNewFldChar().setFldCharType(STFldCharType.BEGIN);pageNo.addNewR().addNewInstrText().setStringValue("PAGE \\* MERGEFORMAT");pageNo.addNewR().addNewFldChar().setFldCharType(STFldCharType.SEPARATE);CTR end = pageNo.addNewR();CTRPr endRPr = end.addNewRPr();endRPr.addNewNoProof();endRPr.addNewLang().setVal(LANG_ZH_CN);end.addNewFldChar().setFldCharType(STFldCharType.END);CTSectPr sectPr = docx.getDocument().getBody().isSetSectPr() ? docx.getDocument().getBody().getSectPr() : docx.getDocument().getBody().addNewSectPr(); XWPFHeaderFooterPolicy policy = new XWPFHeaderFooterPolicy(docx, sectPr);policy.createFooter(STHdrFtr.DEFAULT, new XWPFParagraph[] { footer });}七、⾃定义标题样式(这个在我另⼀篇word基础中也有提及)* 增加⾃定义标题样式。

.NET使用NPOI读取Word模板并替换关键字并下载

.NET使用NPOI读取Word模板并替换关键字并下载

.NET使⽤NPOI读取Word模板并替换关键字并下载NPOI 是 POI 项⽬的 .NET 版本。

POI是⼀个开源的Java读写Excel、WORD等微软OLE2组件⽂档的项⽬。

使⽤ NPOI 你就可以在没有安装 Office 或者相应环境的机器上对 WORD/EXCEL ⽂档进⾏读写NPOI下载地址:/以下代码仅供参考,请根据实际需求进⾏修改。

public MemoryStream Export(){string filepath = Server.MapPath("/word/xmxx.docx");using (FileStream stream = File.OpenRead(filepath)){XWPFDocument doc = new XWPFDocument(stream);//遍历段落foreach (var para in doc.Paragraphs){ReplaceKey(para);}//遍历表格var tables = doc.Tables;foreach (var table in tables){foreach (var row in table.Rows){foreach (var cell in row.GetTableCells()){foreach (var para in cell.Paragraphs){ReplaceKey(para);}}}}using (MemoryStream ms = new MemoryStream()){doc.Write(ms);return ms;}}}private void ReplaceKey(XWPFParagraph para){BLL.XmxxBLL XmxxBLL = new BLL.XmxxBLL();Model.Xmxx model = new Model.Xmxx();model = XmxxBLL.GetModel(20);string text = para.ParagraphText;var runs = para.Runs;string styleid = para.Style;for (int i = 0; i < runs.Count; i++){var run = runs[i];text = run.ToString();Type t = model.GetType();PropertyInfo[] pi = t.GetProperties();foreach (PropertyInfo p in pi){if (text.Contains("{$xmxx." + + "}")){text = text.Replace("{$xmxx." + + "}", mon.StringHelper.ToString(p.GetValue(model, null)));}}runs[i].SetText(text, 0);}}protected void Button1_Click(object sender, EventArgs e){using (MemoryStream ms = Export()){Response.ContentType = "application/vnd.ms-word";Response.ContentEncoding = Encoding.UTF8;Response.Charset = "";Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode("123.doc", Encoding.UTF8));Response.BinaryWrite(Export().GetBuffer());Response.End();}}。

javaPOIHTML转Word两种方式

javaPOIHTML转Word两种方式

javaPOIHTML转Word两种⽅式说明,不论使⽤哪种⽅式,都不能引⽤CSS来渲染样式,⽽是使⽤style,或者将样式放在当前页⾯的<style></style>中⽅法⼀、1、引⽤的jar包<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.0</version></dependency>2、核⼼代码String html = "<div>测试内容</div";POIFSFileSystem poifs = null;FileOutputStream ostream = null;ByteArrayInputStream bais = null;String uuid = "测试.doc";File file = null;try { //HTML内容必须被<html><body></body></html>包装 fileParam.setcContent("<html><body>" + html + "</body></html>"); byte[] b = fileParam.getcContent().getBytes(); bais = new ByteArrayInputStream(b); poifs = new POIFSFileSystem(); DirectoryEntry directory = poifs.getRoot(); //WordDocument名称不允许修改 directory.createDocument("WordDocument", bais); ostream = new FileOutputStream(uuid); poifs.writeFilesystem(ostream);//当前⽬录下就⽣成了⼀个测试.doc的⽂档} catch (Exception e) { logger.error("exception is {}", e);} finally { IOUtils.closeQuietly(poifs); IOUtils.closeQuietly(ostream); IOUtils.closeQuietly(bais); try { FileUtils.forceDelete(file); } catch (Exception e2) { }}⽅法⼆/*** word格式html的标签头*/public static final String HTML_TAG_BGN = "<html xmlns=\"/TR/REC-html40\" xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:o=\"urn:schemas-microsoft-com:office:office\" xmlns:w=\"urn:schemas-microsoft-com:office public filePath downloadWordReport(String htmlForPrint) {try {String wordString = htmlForPrint.replaceAll("<head>", "").replaceAll("<html>", HTML_TAG_BGN );String fileName = new String("测试⽂件.doc".getBytes(), "UTF-8");//上传⽂件⽅法return this.upload(new ByteArrayInputStream(wordString.getBytes()), fileName);} catch (Exception e) {return null;}}。

POI转换worddoc文件为(html,xml,txt)

POI转换worddoc文件为(html,xml,txt)

POI转换worddoc⽂件为(html,xml,txt)在POI中还存在有针对于word doc⽂件进⾏格式转换的功能。

我们可以将word的内容转换为对应的Html⽂件,也可以把它转换为底层⽤来描述doc⽂档的xml⽂件,还可以把它转换为底层⽤来描述doc⽂档的xml格式的text⽂件。

这些格式转换都是通过AbstractWordConverter特定的⼦类来完成的。

1 转换为Html⽂件将doc⽂档转换为对应的Html⽂档是通过WordToHtmlConverter类进⾏的。

它会尽量的利⽤Html的⽅式来呈现原⽂档的样式。

⽰例代码:/*** Word转换为Html* @throws Exception*/@Testpublic void testWordToHtml() throws Exception {InputStream is = new FileInputStream("D:\\test.doc");HWPFDocument wordDocument = new HWPFDocument(is);WordToHtmlConverter converter = new WordToHtmlConverter(DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument());//对HWPFDocument进⾏转换converter.processDocument(wordDocument);Writer writer = new FileWriter(new File("D:\\converter.html"));Transformer transformer = TransformerFactory.newInstance().newTransformer();transformer.setOutputProperty( OutputKeys.ENCODING, "utf-8" );//是否添加空格transformer.setOutputProperty( OutputKeys.INDENT, "yes" );transformer.setOutputProperty( OutputKeys.METHOD, "html" );transformer.transform(new DOMSource(converter.getDocument() ),new StreamResult( writer ) );}2 转换为Xml⽂件将doc⽂档转换为对应的Xml⽂件是通过WordToFoConverter类进⾏的。

JAVA-实现-利用POI读取word文档实例

JAVA-实现-利用POI读取word文档实例

JAVA-实现-利⽤POI读取word⽂档实例package read.document;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.sql.Connection;import java.util.ArrayList;import java.util.List;import org.apache.poi.hwpf.HWPFDocument;import ermodel.CharacterRun;import ermodel.Range;import pers.mysql.DBUtil;import pers.mysql.MysqlDao;import pers.mysql.MysqlDaoImp;public class WordReading {public static void main(String[] args) {String filePath = "*****.doc";readOnWord(filePath);}public static void readOnWord(String filePath) {if (filePath.endsWith(".doc")) {// 输⼊流-基类InputStream is = null;try {is = new FileInputStream(filePath);} catch (FileNotFoundException e) {e.printStackTrace();System.out.println("⽂件打开失败。

");}// 加载doc⽂档try {HWPFDocument doc = new HWPFDocument(is);Range text = doc.getRange();// 整个⽂档/** 分解word:⽂本 ->⼩节 ->段落 ->characterRun(理解为⼩单元)* section -⼩节; paragraph - 段落*///1分出内容节点Range hotWord = text.getSection(2);// 0-封⾯,1-⽬录,2-⽂本;第3⼩节//2段落处理/** 维护两个变量** 热词和解释区别:⼤⼩-word:26,explaining:18**/String word = "";String explaining = "";int wordOK = 0;int explainOK = 0;// 判断当前word&explain是否可以填⼊数据库int count = 24;// 读取⼏条数据到数据库int begin = 2;// 段落读取位置for (int i = 0; i < count;) {Range para = hotWord.getParagraph(begin);CharacterRun field = para.getCharacterRun(0);int fontSize = field.getFontSize();if (fontSize == 26) {word = para.text();wordOK = 1;begin++;} else {while (fontSize < 26) {explaining += para.text();begin++;para = hotWord.getParagraph(begin); field = para.getCharacterRun(0);fontSize = field.getFontSize();}explainOK = 1;}// 判断word&explain是否可以填⼊数据库if (wordOK == 1 && explainOK == 1) {MysqlDaoImp.addData(word, explaining); i++;//填⼊数据库后,⼀切归"0"wordOK = 0;explainOK = 0;word="";explaining="";}}// 输出测试// System.out.println("读取:" + "head:");} catch (IOException e) {e.printStackTrace();System.out.println("IO错误。

Word文档转换为HTML帮助文档操作手册范本

Word文档转换为HTML帮助文档操作手册范本

Word文档转换为HTML帮助文档操作手册一、使用到的软件●DOC2CHM●Dreamweaver CS3●Help and manual 4二、操作步骤1. 先建立一个工作目录。

如hhwork。

2.将需要转换的文件复制到此工作目录下。

如果是中文文件名,最好将其改为英文文件名。

例:现在要将《小神探点检定修信息管理系统使用手册0.3.6.doc》转换为Html格式的帮助文档,首先将此文档复制到hhwork目录下并将其更名为manual36.doc。

如图1所示。

图13.打开软件DOC2CHM,然后找到manual36.doc,然后点击“Convert”按钮,如图2所示。

图24. 程序分析文档后,打开如图3所示的界面。

图35. 在图3所示的界面中选择默认的“Outline”,然后点击“Last>>”按钮,打开图4所示的界面。

图46. 在图4所示的界面中点击“Convert”按钮,程序开始将文档Manual36.doc转换为Html文档,并保存在Manual36子目录下。

7. 在子目录下的以Outline开头的文件夹下,将后缀名为jpg的文件名更改一下,目的是每个文件的名称不同。

8. 用Dreamweaver打开此目录中的所有htm文件,如图5。

图59. 在图5所示的界面中将出现在标题前的标签删除掉,然后将标题复制到标题框中。

然后将图片的更改正确。

10. 打开Help and Manual 4,如图6。

图611. 在图6所示的界面中点击“新建”按钮创建新的帮助方案。

如图7所示。

图712. 在图7所示的界面中选择“导入现有的文件从…”,然后选择“常规HTML和文本文件”,在下面的框中指定源文件夹的位置。

然后点击“下一步”。

程序打开图8所示的界面。

图813. 在上图中指定输出文件的位置,可以采用默认位置。

然后点击“下一步”打开图9所示的界面。

图914. 在图9所示的界面中将不需要的文件移除,然后点击“下一步”打开图10所示的界面。

xwpfdocument doc转

xwpfdocument doc转

xwpfdocument doc转xwpfdocument是Apache POI库中的一个类,用于处理Microsoft Word文档(.docx)的读写操作。

在本篇文章中,我们将讨论如何使用xwpfdocument类将Word文档转换为其他格式。

1. 简介xwpfdocument是POI库中的核心类之一,它提供了一系列方法来读取、写入和修改Word文档。

这个类可以打开一个已存在的文档,也可以创建一个新的文档。

通过操作xwpfdocument对象,我们可以对文档的内容、样式和布局进行编辑。

2. 转换为PDF格式在许多情况下,我们希望将Word文档转换为PDF格式,以便在不同平台上进行共享和打印。

为了实现这个目标,我们可以使用Apache PDFBox库。

以下是一个示例代码,将一个.docx文档转换为.pdf格式。

```javaimport ermodel.XWPFDocument;import org.apache.pdfbox.pdmodel.PDDocument;import org.apache.pdfbox.pdmodel.PDPage;import org.apache.pdfbox.pdmodel.PDPageContentStream;import org.apache.pdfbox.text.PDFTextStripper;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;public class WordToPDFConverter {public static void main(String[] args) {try {// 读取Word文档FileInputStream fis = new FileInputStream("input.docx");XWPFDocument document = new XWPFDocument(fis);// 创建PDF文档PDDocument pdfDoc = new PDDocument();PDPage page = new PDPage();pdfDoc.addPage(page);// 获取Word文档的内容String content = new XWPFWordExtractor(document).getText();// 将内容写入PDF文档PDPageContentStream contentStream = new PDPageContentStream(pdfDoc, page);contentStream.beginText();contentStream.setFont(PDType1Font.TIMES_ROMAN, 12); contentStream.newLineAtOffset(100, 700);contentStream.showText(content);contentStream.endText();contentStream.close();// 保存PDF文档pdfDoc.save(new FileOutputStream("output.pdf"));pdfDoc.close();// 关闭Word文档document.close();fis.close();System.out.println("Word文档已成功转换为PDF格式。

javaword文档转html文件

javaword文档转html文件

javaword⽂档转html⽂件⼀、简介 ⼀般word⽂件后缀有doc、docx两种。

docx是office word 2007以及以后版本⽂档的扩展名;doc是office word 2003⽂档保存的扩展名。

对于这两种格式的word转换成html需要使⽤不同的⽅法。

对于docx格式的⽂档使⽤xdocreport进⾏转换。

依赖如下:<dependency><groupId>fr.opensagres.xdocreport</groupId><artifactId>fr.opensagres.xdocreport.document</artifactId><version>1.0.5</version></dependency><dependency><groupId>fr.opensagres.xdocreport</groupId><artifactId>org.apache.poi.xwpf.converter.xhtml</artifactId><version>1.0.5</version></dependency>对于docx格式的⽂档使⽤poi进⾏转换。

依赖如下:<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.12</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>3.12</version></dependency>⼆:⽰例 代码⽰例如下:1package com.test.word;23import java.io.File;4import java.io.FileInputStream;5import java.io.FileNotFoundException;6import java.io.FileOutputStream;7import java.io.IOException;8import java.io.InputStream;9import java.io.OutputStream;1011import javax.xml.parsers.DocumentBuilderFactory;12import javax.xml.parsers.ParserConfigurationException;13import javax.xml.transform.OutputKeys;14import javax.xml.transform.Transformer;15import javax.xml.transform.TransformerException;16import javax.xml.transform.TransformerFactory;17import javax.xml.transform.dom.DOMSource;18import javax.xml.transform.stream.StreamResult;1920import org.apache.poi.hwpf.HWPFDocument;21import org.apache.poi.hwpf.converter.PicturesManager;22import org.apache.poi.hwpf.converter.WordToHtmlConverter;23import ermodel.PictureType;24import org.apache.poi.xwpf.converter.core.FileImageExtractor;25import org.apache.poi.xwpf.converter.core.FileURIResolver;26import org.apache.poi.xwpf.converter.xhtml.XHTMLConverter;27import org.apache.poi.xwpf.converter.xhtml.XHTMLOptions;28import ermodel.XWPFDocument;29import org.junit.Test;30import org.w3c.dom.Document;3132/**33 * word 转换成html34*/35public class WordToHtml {3637/**38 * 2007版本word转换成html39 * @throws IOException40*/41 @Test42public void Word2007ToHtml() throws IOException {43 String filepath = "C:/test/";44 String fileName = "滕王阁序2007.docx";45 String htmlName = "滕王阁序2007.html";46final String file = filepath + fileName;47 File f = new File(file);48if (!f.exists()) {49 System.out.println("Sorry File does not Exists!");50 } else {51if (f.getName().endsWith(".docx") || f.getName().endsWith(".DOCX")) {5253// 1) 加载word⽂档⽣成 XWPFDocument对象54 InputStream in = new FileInputStream(f);55 XWPFDocument document = new XWPFDocument(in);5657// 2) 解析 XHTML配置 (这⾥设置IURIResolver来设置图⽚存放的⽬录)58 File imageFolderFile = new File(filepath);59 XHTMLOptions options = XHTMLOptions.create().URIResolver(new FileURIResolver(imageFolderFile));60 options.setExtractor(new FileImageExtractor(imageFolderFile));61 options.setIgnoreStylesIfUnused(false);62 options.setFragment(true);6364// 3) 将 XWPFDocument转换成XHTML65 OutputStream out = new FileOutputStream(new File(filepath + htmlName));66 XHTMLConverter.getInstance().convert(document, out, options);6768//也可以使⽤字符数组流获取解析的内容69// ByteArrayOutputStream baos = new ByteArrayOutputStream();70// XHTMLConverter.getInstance().convert(document, baos, options);71// String content = baos.toString();72// System.out.println(content);73// baos.close();74 } else {75 System.out.println("Enter only MS Office 2007+ files");76 }77 }78 }7980/**81 * /**82 * 2003版本word转换成html83 * @throws IOException84 * @throws TransformerException85 * @throws ParserConfigurationException86*/87 @Test88public void Word2003ToHtml() throws IOException, TransformerException, ParserConfigurationException {89 String filepath = "C:/test/";90final String imagepath = "C:/test/image/";91 String fileName = "滕王阁序2003.doc";92 String htmlName = "滕王阁序2003.html";93final String file = filepath + fileName;94 InputStream input = new FileInputStream(new File(file));95 HWPFDocument wordDocument = new HWPFDocument(input);96 WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument()); 97//设置图⽚存放的位置98 wordToHtmlConverter.setPicturesManager(new PicturesManager() {99public String savePicture(byte[] content, PictureType pictureType, String suggestedName, float widthInches, float heightInches) {100 File imgPath = new File(imagepath);101if(!imgPath.exists()){//图⽚⽬录不存在则创建102 imgPath.mkdirs();103 }104 File file = new File(imagepath + suggestedName);105try {106 OutputStream os = new FileOutputStream(file);107 os.write(content);108 os.close();109 } catch (FileNotFoundException e) {110 e.printStackTrace();111 } catch (IOException e) {112 e.printStackTrace();113 }114return imagepath + suggestedName;115 }116 });117118//解析word⽂档119 wordToHtmlConverter.processDocument(wordDocument);120 Document htmlDocument = wordToHtmlConverter.getDocument();121122 File htmlFile = new File(filepath + htmlName);123 OutputStream outStream = new FileOutputStream(htmlFile);124125//也可以使⽤字符数组流获取解析的内容126// ByteArrayOutputStream baos = new ByteArrayOutputStream();127// OutputStream outStream = new BufferedOutputStream(baos);128129 DOMSource domSource = new DOMSource(htmlDocument);130 StreamResult streamResult = new StreamResult(outStream);131132 TransformerFactory factory = TransformerFactory.newInstance(); 133 Transformer serializer = factory.newTransformer();134 serializer.setOutputProperty(OutputKeys.ENCODING, "utf-8"); 135 serializer.setOutputProperty(OutputKeys.INDENT, "yes");136 serializer.setOutputProperty(OutputKeys.METHOD, "html"); 137138 serializer.transform(domSource, streamResult);139140//也可以使⽤字符数组流获取解析的内容141// String content = baos.toString();142// System.out.println(content);143// baos.close();144 outStream.close();145 }146 } 运⾏⽣存⽂件结果如下:。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
86.
87.//当前字符
88.charcurrentChar = cr.text().charAt(0);
89.
90.//判断是否为回车符
91.if(currentChar == ENTER_ASCII)
92.tempString +="<br/>";
93.//判断是否为空格符
94.elseif(currentChar == SPACE_ASCII)
44.
45./**
46.*读取每个文字样式
47.*
48.* @param fileName
49.* @throws Exception
50.*/
51.publicvoidgetWordAndStyle(String fileName)throwsException {
52.
53.FileInputStream in =newFileInputStream(newFile(fileName));
101.
102.String fontStyle ="<span style='font-family:"+ cr.getFontName() +";font-size:"+ cr.getFontSize() /2+"pt;";
103.
104.if(cr.isBold())
105.fontStyle +="font-weight:bold;";
11.importjava.io.IOException;
12.importjava.io.OutputStream;
13.importjava.io.OutputStreamWriter;
14.
15.importorg.apache.poi.hwpf.HWPFDocument;
16.importorg.apache.poi.hwpf.model.PicturesTable;
54.
55.HWPFDocument doc =newHWPFDocument(in);
56.
57.//取得文档中字符的总数
58.intlength = doc.characterLength();
59.
60.//创建图片容器
61.PicturesTable pTable = doc.getPicturesTable();
ermodel.CharacterRun;
ermodel.Picture;
ermodel.Range;
20.
21./**
74.
75.if(pTable.hasPicture(cr)) {
76.
77.//读写图片
78.this.readPicture(pTable, cr);
79.
80.}else{
81.
82.Range range2 =newRange(i +1, i +2, doc);
83.
84.//第二个字符
85.CharacterRun cr2 = range2.getCharacterRun(0);
POI读取word转换html
文章分类:Java编程
apache POI读取word文档的文档比较少,所以只有自己慢慢的摸索,这篇文章也属于比较基础入门的,主要是针对读取word中的图片,以及文字的各种样式,如有不好的地方,请各位多多指教!
JavБайду номын сангаас代码
1./**
2.*
3.*/
4.packagecom.util;
95.tempString +="&nbsp;";
96.//判断是否为水平制表符
97.elseif(currentChar == TABULATION_ASCII)
98.tempString +=" &nbsp;&nbsp;&nbsp;";
99.//比较前后2个字符是否具有相同的格式
100.booleanflag = compareCharStyle(cr, cr2);
106.if(cr.isItalic())
107.fontStyle +="font-style:italic;";
108.
109.if(flag && i != length -2)
110.tempString += currentChar;
35.*/
36.privatestaticfinalshortSPACE_ASCII =32;
37.
38./**
39.*水平制表符ASCII码
40.*/
41.privatestaticfinalshortTABULATION_ASCII =9;
42.
43.privateString htmlText ="";
5.
6.importjava.io.BufferedWriter;
7.importjava.io.File;
8.importjava.io.FileInputStream;
9.importjava.io.FileNotFoundException;
10.importjava.io.FileOutputStream;
22.*
23.* @author张廷下午10:36:40
24.*
25.*/
26.publicclassWordToHtml {
27.
28./**
29.*回车符ASCII码
30.*/
31.privatestaticfinalshortENTER_ASCII =13;
32.
33./**
34.*空格符ASCII码
68.
69.for(inti =0; i < length -1; i++) {
70.//整篇文章的字符通过一个个字符的来判断,range为得到文档的范围
71.Range range =newRange(i, i +1, doc);
72.
73.CharacterRun cr = range.getCharacterRun(0);
62.
63.htmlText ="<html><head><title>"+ doc.getSummaryInformation().getTitle() +"</title></head><body>";
64.
65.//创建临时字符串,好加以判断一串字符是否存在相同格式
66.
67.String tempString ="";
相关文档
最新文档