市面上处置文字的的办公软件有很多,包括WPS、MSOffice、永中OFFICE,当然还有开源的openoffice、liboffice等。我们在项目开发进程中常常会遇到预览word文件,数据库中数据自动填充word模板等需求。如今可以满足以上需求的技术有很多,效劳端可经过POI\aspose等处置,也可经过客户端调用OFFICE组件处置,本人曾经在这方便做了很多测试,最终发现兼容性最好的、接口对JAVA顺序员最友好的就属永中OFFICE,由于它基本就是JAVA完成的,运用起来十分方便。
我的测试环境运用的是永中2016版本,它运转要求JRE1.6,且我发现它应该是对JRE停止过重构,按永中SDK要求编写代码经过自ORACAL官网下载的jdk1.6编译后运转是失败的,如今都2021年了,我们的项目绝大少数都JDK1.8以上版本了,那么怎样让SDK兼容我们的项目呢?怎样完成标题中提到的两个需求呢?下面我说说我的处置办法吧:
1、下载永中软件并安装(官网下载即可) 2、安装后翻开安装途径可以看到如下图 永中软件安装目录JRE:即永中软件的运转环境
Yozo_Office.jar: 即永中为开发者提供的SDK,可以将jar导入到工程中
3、编写WORD文件处置效劳组件处置word文件的代码片段,详细代码请在文后下载源码查阅
处置word文件的代码片段,详细代码请在文后下载源码查阅
/**
* 将word文件转换为对应格式的文件的字节数组
* @param type 将word文件转换成的文件格式 pdf、html\ofd\txt\xml
* @return
* @throws IOException
*/
public byte[] convertFile(String type) throws IOException {
int typePdf = FileConstants.TYPE_PDF;
if("html".equals(type.toLowerCase())) {//此功用转换后乱码,前期可采用 this.workbook.saveAs("D:/2.html"); 方式存储html后,将字节前往
typePdf= FileConstants.FILETYPE_HTML;
}else if("ofd".equals(type.toLowerCase())) {
typePdf= FileConstants.TYPE_OFD; // 这个是不成功的,应该是版本太低
}else if("txt".equals(type.toLowerCase())) {
typePdf = FileConstants.TYPE_TXT;
}else if("xml".equals(type.toLowerCase())) {
typePdf = FileConstants.FILETYPE_XML;
}else if("doc".equals(type.toLowerCase())||"xls".equals(type.toLowerCase())||"ppt".equals(type.toLowerCase())) {
typePdf = FileConstants.TYPE_MS;
}else if("docx".equals(type.toLowerCase())||"xlsx".equals(type.toLowerCase())||"pptx".equals(type.toLowerCase())) {
typePdf = FileConstants.TYPE_MS_EX;
}
return this.workbooks.getWorkbookAsByteArray(workbook, typePdf);
}
/**
* 交流word模板中的书签
* @param jsonObject 数据内容 {“bookmarkname”:”test“}
*/
public void replaceBookMark(JSONObject jsonObject) {
BookMarks bookMarks = this.document.getBookMarks();
BookMark[] allBookmarks = bookMarks.getAllBookmarks();
for(BookMark bookMark:allBookmarks){
String name = bookMark.getName();
TextRange range = bookMark.getRange();
(责任编辑:admin)