文档库 最新最全的文档下载
当前位置:文档库 › java通过url在线预览Word、excel、ppt、pdf、txt文档____

java通过url在线预览Word、excel、ppt、pdf、txt文档____

java通过url在线预览Word、excel、ppt、pdf、txt文档____
java通过url在线预览Word、excel、ppt、pdf、txt文档____

java通过url在线预览Word、excel、ppt、pdf、txt文档中的内容【只获得其中的文字】

分类:毕业设计的问题学习2011-04-01 18:43 阅读(273) 评论(2) 收藏举报在页面上显示各种文档中的内容。在servlet中的逻辑

word:

BufferedInputStream bis = null;

URL url = null;

HttpURLConnection httpUrl = null; // 建立链接

url = new URL(urlReal);

httpUrl = (HttpURLConnection) url.openConnection();// 连接指定的资源

httpUrl.connect();// 获取网络输入流

bis = new BufferedInputStream(httpUrl.getInputStream());

String bodyText = null;

WordExtractor ex = new WordExtractor(bis);

bodyText = ex.getText();

response.getWriter().write(bodyText);

excel:

BufferedInputStream bis = null;

URL url = null;

HttpURLConnection httpUrl = null; // 建立链接

url = new URL(urlReal);

httpUrl = (HttpURLConnection) url.openConnection();// 连接指定的资源

httpUrl.connect();// 获取网络输入流

bis = new BufferedInputStream(httpUrl.getInputStream());

content = new StringBuffer();

HSSFWorkbook workbook = new HSSFWorkbook(bis);

for (int numSheets = 0; numSheets < workbook.getNumberOfSheets(); numSheets++) {

HSSFSheet aSheet = workbook.getSheetAt(numSheets);// 获得一个sheet content.append("/n");

if (null == aSheet) {

continue;

}

for (int rowNum = 0; rowNum <= aSheet.getLastRowNum(); rowNum++) { content.append("/n");

HSSFRow aRow = aSheet.getRow(rowNum);

if (null == aRow) {

continue;

}

for (short cellNum = 0; cellNum <= aRow.getLastCellNum(); cellNum++) { HSSFCell aCell = aRow.getCell(cellNum);

if (null == aCell) {

continue;

}

if (aCell.getCellType() == HSSFCell.CELL_TYPE_STRING) {

content.append(aCell.getRichStringCellValue()

.getString());

} else if (aCell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {

boolean b = HSSFDateUtil.isCellDateFormatted(aCell);

if (b) {

Date date = aCell.getDateCellValue();

SimpleDateFormat df = new SimpleDateFormat(

"yyyy-MM-dd");

content.append(df.format(date));

}

}

}

}

}

response.getWriter().write(content.toString());

ppt:

BufferedInputStream bis = null;

URL url = null;

HttpURLConnection httpUrl = null; // 建立链接

url = new URL(urlReal);

httpUrl = (HttpURLConnection) url.openConnection();// 连接指定的资源 httpUrl.connect();// 获取网络输入流

bis = new BufferedInputStream(httpUrl.getInputStream());

StringBuffer content = new StringBuffer("");

SlideShow ss = new SlideShow(new HSLFSlideShow(bis));

Slide[] slides = ss.getSlides();

for (int i = 0; i < slides.length; i++) {

TextRun[] t = slides[i].getTextRuns();

for (int j = 0; j < t.length; j++) {

content.append(t[j].getText());

}

content.append(slides[i].getTitle());

}

response.getWriter().write(content.toString());

pdf:

BufferedInputStream bis = null;

URL url = null;

HttpURLConnection httpUrl = null; // 建立链接

url = new URL(urlReal);

httpUrl = (HttpURLConnection) url.openConnection();// 连接指定的资源 httpUrl.connect();// 获取网络输入流

bis = new BufferedInputStream(httpUrl.getInputStream());

PDDocument pdfdocument = null;

PDFParser parser = new PDFParser(bis);

parser.parse();

pdfdocument = parser.getPDDocument();

ByteArrayOutputStream out = new ByteArrayOutputStream();

OutputStreamWriter writer = new OutputStreamWriter(out);

PDFTextStripper stripper = new PDFTextStripper();

stripper.writeText(pdfdocument.getDocument(), writer);

writer.close();

byte[] contents = out.toByteArray();

String ts = new String(contents);

response.getWriter().write(ts);

txt:

BufferedReader bis = null;

URL url = null;

HttpURLConnection httpUrl = null; // 建立链接

url = new URL(urlReal);

httpUrl = (HttpURLConnection) url.openConnection();// 连接指定的资源

httpUrl.connect();// 获取网络输入流

bis = new BufferedReader( new InputStreamReader(httpUrl.getInputStream()));

StringBuffer buf=new StringBuffer();

String temp;

while ((temp = bis.readLine()) != null) {

buf.append(temp);

response.getWriter().write(temp);

if(buf.length()>=1000){

break;

}

}

bis.close();

如何能让Java生成复杂Word文档(1)

先用office2003或者2007编辑好word的样式,然后另存为xml,将xml翻译为FreeMarker 模板,最后用java来解析FreeMarker模板并输出Doc。经测试这样方式生成的word文档完全符合office标准,样式、内容控制非常便利,打印也不会变形,生成的文档和office中编辑文档完全一样。 AD:客户要求用程序生成标准的word文档,要能打印,而且不能变形,以前用过很多解决方案,都在客户严格要求下牺牲的无比惨烈。 POI读word文档还行,写文档实在不敢恭维,复杂的样式很难控制不提,想象一下一个20多页,嵌套很多表格和图像的word文档靠POI来写代码输出,对程序员来说比去山西挖煤还惨,况且文档格式还经常变化。 iText操作Excel还行。对于复杂的大量的word也是噩梦。 直接通过JSP输出样式基本不达标,而且要打印出来就更是惨不忍睹。 Word从2003开始支持XML格式,用XML还做就很简单了。 大致的思路是先用office2003或者2007编辑好word的样式,然后另存为xml,将xml 翻译为FreeMarker模板,最后用java来解析FreeMarker模板并输出Doc。经测试这样方式生成的word文档完全符合office标准,样式、内容控制非常便利,打印也不会变形,生成的文档和office中编辑文档完全一样。 看看实际效果 首先用office【版本要2003以上,以下的不支持xml格式】编辑文档的样式,图中红线的部分就是我要输出的部分:

将编辑好的文档另存为XML 再用Firstobject free XML editor将xml中我们需要填数据的地方打上FreeMarker标记

Java生产WORD并下载到本地

1.为你的项目导入freeMarker包 我的项目是依靠maven来维护依赖的,所以引入很方便,只需要在pom文件中加入下面这个依赖就好 [html]view plain copy 1. 2.org.freemarker 3.freemarker 4.2.3.23 5. 如果还是比较传统的话,就像那个链接里的项目一样,把jar包导入项目吧 2.依据模板动态生成word文档,首先你得有个模板 模板是doc类型就好,注意不是docx,docx没有尝试,doc类型已经满足了我的需求,朋友们如果尝试成功了可以告诉我一下 test.doc,注意“产品品质证明书”是一张图片哦,图片会漂亮的留在生成的新文档中。将变量替换成${xxx}即可,这里只选了两 个变量 3.点击文件->另存为将test.doc保存为xml类型,即Word XML文档.xml类型,得到test.xml 4.用notepad或者sublime打开test.xml,你会发现${xxx}会被分割成 ${*********xxx********)的样子,将*******删除,保证它又成了完整的变量 标签,像这样

5.将文件已utf-8编码保存,另存为为.ftl,找不到该格式直接改文件后缀名就行,这样得到test.ftl 6.前台触发事件 我的项目是基于SpringMVC的,所以前台触发只需要在view层的文件里加个按钮事件即可,直接上代码 [javascript]view plain copy 1.function generateMillCertificate(id) {//点击下载按钮触发的事件 2. window.location.href = '../deliveryOrder/exportMillCertificate?id=' + id; 3. } 7.后台生成文件,并返回给客户的浏览器 这里又分为两步 a.controller层接收请求,根据参数拼凑数据,放在map中 [java]view plain copy 1./*** 2. * 导出Word材质单 3. * 4. * @return 5. * @throws Exception 6. */ 7.@RequestMapping(value = "exportMillCertificate", method = RequestMethod. GET) 8.@ResponseBody 9.public void exportMillCertificate(HttpServletRequest request, 10. HttpServletResponse response) throws Exception { 11.//获得数据,系统相关,就不展示了 12. Map map = new HashMap(); 13. map.put("customerShortName",deliveryOrder.getRepositoryName()); 14. map.put("productName",deliveryOrderDetail.getProductName()); 15. WordUtils.exportMillCertificateWord(request,response,map); 16. } b.工具类WordUtils利用传来的map和将要返回给用户的HTTPServletReponse,将map里的数据和模板中${xxx}标签对应的变量值填入, 生成新的文档,通过response返回给浏览器并提供用户下载 [java]view plain copy 1.public class WordUtils { 2.//配置信息,代码本身写的还是很可读的,就不过多注解了 3.private static Configuration configuration = null; 4.//这里注意的是利用WordUtils的类加载器动态获得模板文件的位置

(完整word版)JAVA代码规范详细版

JAVA代码规范 本Java代码规范以SUN的标准Java代码规范为基础,为适应我们公司的实际需要,可能会做一些修改。本文档中没有说明的地方,请参看SUN Java标准代码规范。如果两边有冲突,以SUN Java标准为准。 1. 标识符命名规范 1.1 概述 标识符的命名力求做到统一、达意和简洁。 1.1.1 统一 统一是指,对于同一个概念,在程序中用同一种表示方法,比如对于供应商,既可以用supplier,也可以用provider,但是我们只能选定一个使用,至少在一个Java项目中保持统一。统一是作为重要的,如果对同一概念有不同的表示方法,会使代码混乱难以理解。即使不能取得好的名称,但是只要统一,阅读起来也不会太困难,因为阅读者只要理解一次。 1.1.2 达意 达意是指,标识符能准确的表达出它所代表的意义,比如:newSupplier, OrderPaymentGatewayService等;而supplier1, service2,idtts等则不是好的命名方式。准确有两成含义,一是正确,而是丰富。如果给一个代表供应商的变量起名是order,显然没有正确表达。同样的,supplier1, 远没有targetSupplier意义丰富。 1.1.3 简洁 简洁是指,在统一和达意的前提下,用尽量少的标识符。如果不能达意,宁愿不要简洁。比如:theOrderNameOfTheTargetSupplierWhichIsTransfered 太长,transferedTargetSupplierOrderName则较好,但是transTgtSplOrdNm就不好了。省略元音的缩写方式不要使用,我们的英语往往还没有好到看得懂奇怪的缩写。 1.1.4 骆驼法则 Java中,除了包名,静态常量等特殊情况,大部分情况下标识符使用骆驼法则,即单词之间不使用特殊符号分割,而是通过首字母大写来分割。比如: supplierName, addNewContract,而不是supplier_name, add_new_contract。

java操作word(内部资料)

JAVA操作word Java操作Microsoft Word之jacob(1) 现在我们一起来看看,用J1ava如何操作Microsoft Word。 jacob,官网是https://www.wendangku.net/doc/8c1152715.html,/jacob 这是一个开源的工具。最新版本1.7 官方的解释是:The JACOB Project: A JAva-COM Bridge 这是官方对下载文件的说明: jacob.jar: a JAR file for the java classes which you must add to your CLASSPATH. The package names replace com.ms with com.jacob (for example https://www.wendangku.net/doc/8c1152715.html,.Variant maps to https://www.wendangku.net/doc/8c1152715.html,.Variant. jacob.dll: a small Win32 DLL which you must add to your PATH. samples: provided in Java source and compiled form to demonstrate various features of the product. In particular, a set of wrapper classes for Microsoft? ADO are provided as samples. 开发环境: JDK 1.6 MyEclipse Enterprise Workbench Version: 7.0 Milestone-1 Tomcat 5.5.27 现在MyEclipse中新建一个项目jacob,将jacob的jar包放到该项目的类库中。 我的jacob版本是1.14.3 。

java根据模板生成pdf文件并导出

java根据模板生成pdf文件并导出 首先你的制作一个pdf模板: 1.先用word做出模板界面 2.文件另存为pdf格式文件 3.通过Adobe Acrobat pro软件打开刚刚用word转换成的pdf 文件(注:如果没有这个软件可以通过我的百度云下载,链接:https://www.wendangku.net/doc/8c1152715.html,/s/1pL2klzt)如果无法下载可以联系博主。4.点击右边的"准备表单"按钮,选择"测试.pdf"选择开始 进去到编辑页面,打开后它会自动侦测并命名表单域,右键表单域,点击属性,出现文本域属性对话框(其实无需任何操作,一般情况下不需要修改什么东西,至少我没有修改哦。如果你想修改fill1等信息,可以进行修改)5.做完上面的工作后,直接"另存为"将pdf存储就可以 ****************************************************************** *********** 以上部分是制作pdf模板操作,上述完成后,就开始通过程序来根据pdf模板生成pdf文件了,上java程序: 1.首先需要依赖包:itext的jar包,我是maven项目,所以附上maven依赖 [html] view plain copy print?<!--

https://https://www.wendangku.net/doc/8c1152715.html,/artifact/com.itextpdf/itextpdf --> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.10</version> </dependency> [html] view plain copy print?<!-- https://https://www.wendangku.net/doc/8c1152715.html,/artifact/com.itextpdf/itext-asian --> <span style="white-space:pre;"> </span><dependency> <span style="white-space:pre;"> </span> <groupId>com.itextpdf</groupId> <span style="white-space:pre;"> </span> <artifactId>itext-asian</artifactId> <span style="white-space:pre;"> </span> <version>5.2.0</version> <span style="white-space:pre;"> </span></dependency> 2.下面就是生成pdf代码了 [java] view plain copy print?import java.io.ByteArrayOutputStream; import

JAVA导出WORD与EXCEL

package ais.mytest.web; /** * 功能:主要实现数据导出Excel和Word功能* 日期:2008-2-28 */ import ais.basic.service.BasicUtil; import https://www.wendangku.net/doc/8c1152715.html,mons.file.service.FileService; import ais.framework.web.BaseAction; import ais.mytest.model.Employeer; import ais.mytest.service.IemployeerService; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.text.DecimalFormat; import jxl.write.NumberFormat; import java.util.List; import javax.servlet.ServletOutputStream; import jxl.Cell; import jxl.Workbook; import jxl.format.Alignment; import jxl.format.UnderlineStyle; import jxl.format.VerticalAlignment; import jxl.format.Border; import jxl.format.BorderLineStyle; import jxl.format.BoldStyle; import jxl.format.Colour; import jxl.write.Blank; import jxl.write.DateFormat; import jxl.write.DateTime; import https://www.wendangku.net/doc/8c1152715.html,bel; import jxl.write.WritableCellFormat; import jxl.write.WritableFont; import jxl.write.WritableImage; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; //import com.ibm.icu.text.SimpleDateFormat; //import com.lowagie.text.Cell; import com.lowagie.text.Document; import com.lowagie.text.Font; import com.lowagie.text.Image;

java导出word

java jacob 操作word 文档,进行写操作,如生成表格,添加图片jacob-1.15-M3.zip jacob-1.15-M3-x86.dll copy 到c:\\windows\system32 引入jacob.jar 示例代码 import java.io.File; import com.jacob.activeX.ActiveXComponent; import https://www.wendangku.net/doc/8c1152715.html,.Dispatch; import https://www.wendangku.net/doc/8c1152715.html,.V ariant; class WordBean { // 代表一个word 程序 private ActiveXComponent MsWordApp = null; // 代表进行处理的word 文档 private Dispatch document = null; public WordBean() { // Open Word if we\'ve not done it already if (MsWordApp == null) { MsWordApp = new ActiveXComponent("Word.Application"); } } // 设置是否在前台打开word 程序, public void setVisible(boolean visible) { MsWordApp.setProperty("Visible", new V ariant(vis ible)); // 这一句作用相同 // Dispatch.put(MsWordApp, "Visible", new V ariant(visible)); } // 创建一个新文档 public void createNewDocument() { // Find the Documents collection object maintained by Word // documents表示word的所有文档窗口,(word是多文档应用程序) Dispatch documents = Dispatch.get(MsWordApp, "Documents").toDispatch(); // Call the Add method of the Documents collection to create // a new document to edit document = Dispatch.call(documents, "Add").toDispatch(); } // 打开一个存在的word文档,并用document 引用引用它

java生成word文档

package com.sample; import java.awt.Color; import java.io.FileOutputStream; import java.io.IOException; import com.lowagie.text.Cell; import com.lowagie.text.Document; import com.lowagie.text.DocumentException; import com.lowagie.text.Element; import com.lowagie.text.Font; import com.lowagie.text.FontFactory; import com.lowagie.text.Image; import com.lowagie.text.PageSize; import com.lowagie.text.Paragraph; import com.lowagie.text.Phrase; import com.lowagie.text.Table; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.rtf.RtfWriter2; /** * * @author wangyanjun * @email bd_wyj@https://www.wendangku.net/doc/8c1152715.html, * @createDate Jun 12, 2008 */ public class CreateWordDemo { public void createDocContext(String file) throws DocumentException, IOException { // 设置纸张大小 Document document = new Document(PageSize.A4); // 建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中 RtfWriter2.getInstance(document, new FileOutputStream(file)); document.open(); // 设置中文字体 BaseFont bfChinese = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); // 标题字体风格 Font titleFont = new Font(bfChinese, 12, Font.BOLD); // 正文字体风格 Font contextFont = new Font(bfChinese, 10, Font.NORMAL); Paragraph title = new Paragraph("标题");

JAVA动态生成word和pdf

java生成word的几种方案 1、Jacob是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁。 使用Jacob自带的DLL动态链接库,并通过JNI的方式实现了在Java平台上对COM程序的调用。DLL动态链接库的生成需要windows平台的支持。 2、Apache POI包括一系列的API,它们可以操作基于MicroSoft OLE 2 Compound Document Format的各种格式文件,可以通过这些API在Java中读写Excel、Word 等文件。他的excel处理很强大,对于word还局限于读取,目前只能实现一些简单文件的操作,不能设置样式。 3、Java2word是一个在java程序中调用MS Office Word 文档的组件(类库)。该组件提 供了一组简单的接口,以便java程序调用他的服务操作Word 文档。 这些服务包括:打开文档、新建文档、查找文字、替换文字,插入文字、插入图片、插入表格,在书签处插入文字、插入图片、插入表格等。填充数据到表格中读取表格数据,1.1版增强的功能:指定文本样式,指定表格样式。如此,则可动态排版word 文档。 4、iText操作Excel还行。对于复杂的大量的word也是噩梦。用法很简单, 但是功能很少, 不 能设置打印方向等问题。 5、JSP输出样式基本不达标,而且要打印出来就更是惨不忍睹。 6、用XML做就很简单了。Word从2003开始支持XML格式,大致的思路是先用office2003 或者2007编辑好word的样式,然后另存为xml,将xml翻译为FreeMarker模板,最后用java来解析FreeMarker模板并输出Doc。经测试这样方式生成的word文档完全符合office标准,样式、内容控制非常便利,打印也不会变形,生成的文档和office中编辑文档完全一样。 java生成pdf方案总结 1. Jasper Report生成pdf:设计思路是先生成模板,然后得到数据,最后将两者整合得到结果。但是Jasper Report的问题在于,其生成模板的方式过于复杂,即使有IDE的帮助,我们还是需要对其中的众多规则有所了解才行,否则就会给调试带来极大的麻烦。 2. openoffice生成pdf:openoffice是开源软件且能在windows和linux平台下运行。 3. itext + flying saucer生成pdf:itext和flying saucer都是免费开源的,且与平台无关,结合css和velocity技术,可以很好的实现。 一般使用第三种方案比较多,它实现的步骤是非常简单的。

java txt 转word

使用JACOB进行Word编程示例 2015年7月2日 13:44 Jacob项目的官方地址:https://www.wendangku.net/doc/8c1152715.html,/projects/jacob-project/ 官方介绍: JACOB is a JAVA-COM Bridge that allows you to call COM Automation components from Java. It uses JNI to make native calls to the COM libraries. JACOB runs on x86 and x64 environments supporting 32 bit and 64 bit JVMs 它是一个使用jni来调用com组件及其库文件的工具。这里仅介绍处理word文档。 首先要部署其dll文件。jacob-1.14.3-x86.dll 或 jacob-1.14.3-x64.dll,下载的文件解压后即可看到。我是直接将dll文件放在windows\system32目录下的,方便,当然也有其他做法。 其次,就是把其jar文件路径加入Windows路径中。 接着就可以在你的Java程序中调用了。我总结下大概有下面几个阶段: 1. 初始化相关参数,代码如下: // 打开Word应用程序 ActiveXComponent app = new ActiveXComponent("Word.Application"); // 设置word不可见 app.setProperty("Visible", new Variant(false)); // 打开word文件 Dispatch word = app.getProperty("Documents").toDispatch(); Dispatch doc = Dispatch.invoke(word, "Open", Dispatch.Method, new Object[] {" File Name", new Variant(false), new Variant(false) }, new int[1]).toDispatch(); //获取指针 Dispatch cursor = app.getProperty("Selection").toDispatch(); 如上,我们打开了一个名为File Name的word文件,你可能会觉得最后那句看起来很繁琐,是的,有更好的代替方式,如下: Dispatch doc = Dispatch.call(word, "Open", new Variant(false), new Variant(false) ).toDisptach(); 这正是Jacob给我们提供的两种调用方式。 2. 处理word文档,如果你先前有VBA相关开发经验,那就简单了。没有的也没事,打开office程序目录下的2052\VBAWD10.chm,这里有Word的对象模型的所有记录。 接着讲述下Jacob中两种最常用的类型: Variant:这是一种可变的类型,用于Jacob中几乎所有函数的返回值,并可转换为其他任何类型,包括Java基本类型。当然,应该按需要与规则来。Dispatch:Object represents MS level dispatch object. Each instance of this points at some data structure on the MS windows side.就是说可以代表所有对象模型。 import java.util.ArrayList; import java.util.List; import com.jacob.activeX.ActiveXComponent;

JAVA不使用POI,用PageOffice动态导出Word文档

JAVA不使用POI,用PageOffice动态导出Word文档 很多情况下,软件开发者需要从数据库读取数据,然后将数据动态填充到手工预先准备好的Word模板文档里,这对于大批量生成拥有相同格式排版的正式文件非常有用,这个功能应用PageOffice的基本动态填充功能即可实现。但若是用户想动态生成一个没有固定模版的公文时,换句话说,没有办法事先准备一个固定格式的模板时,就需要开发人员在后台用代码实现Word文档的从零到图文并茂的动态生成功能了。这里的“零”指的是Word空白文档。 那如何实现Word文档的从无到有呢,下面我就把自己实现这一功能的过程介绍一下。 例如,我想打开一个Word文档,里面的内容为:标题(粗体、黑体、字体大小为20、居中显示)、第一段内容(内容(略)、字体倾斜、字体大小为10、中文“楷体”、英文“Times New Roman”、红色、最小行间距、左对齐、首行缩进)、第二段内容(内容(略)、字体大小为12、黑体、1.5倍行间距、左对齐、首行缩进、插入图片)、第三段内容(内容(略)、字体大小为14、华文彩云、2倍行间距、左对齐、首行缩进) 第一步:请先安装PageOffice的服务器端的安装程序,之后在WEB项目下的“WebRoot/WEB-INF/lib”路径中添加pageoffice.cab和pageoffice.jar(在https://www.wendangku.net/doc/8c1152715.html,网站的“下载中心”中可下载相应的压缩包,解压之后直接将pageoffice.cab和pageoffice.jar文件拷贝到该目录下就可以了)文件。 第二步:修改WEB项目的配置文件,将如下代码添加到配置文件中: poservercom.zhuozhengsoft .pageoffice.poserver.Server poserver /poserver.do

java html内容生成word文件实现代码

java html内容生成word文件实现代码 https://www.wendangku.net/doc/8c1152715.html, 编辑:kepeer 来源:转载 处理HTML标签我用的是Jsoup组件,生成word文档这方面我用的是Jacob组件。 有兴趣的朋友可以去Google搜索一下这两个组件。大致思路如下: 先利用jsoup将得到的html代码“标准化”(Jsoup.parse(String html))方法,然后利用FileWiter 将此html内容写到本地的template.doc文件中,此时如果文章中包含图片的话,template.doc 就会依赖你的本地图片文件路径,如果你将图片更改一个名称或者将路径更改,再打开这个template.doc,图片就会显示不出来(出现一个叉叉)。为了解决此问题,利用jsoup组件循环遍历html文档的内容,将img元素替换成${image_自增值}的标识,取出img元素中的src 此时你的html内容会变成如下格式:(举个示例) 代码如下复制代码 测试消息1 ${image_1}

测试消息2 ${image_2} 测试消息3 保存到本地文件以后,利用MSOfficeGeneratorUtils类(工具类详见下面,基于开源组件Jacob)打开你保存的这个template.doc,调用replaceText2Image,将上面代码的图片标识替换为图片,这样就消除了本地图片路径的问题。然后再调用copy方法,复制整篇文档,关闭template.doc

Java操作word文档

Java操作Word文档 操作微软word办公软件的开发工具: 1.Apache基金会提供的POI 2.通过freemarker去解析xml 3.Java2word 4.iText 5.Jacob 通过对以上工具的对比,本人发现还是Itext比较简单易用,很容易上手,能够很轻松的处理word的样式、表格等。 贴上代码,供大家参考: Jar包准备: itext-2.0.1.jar -------------------核心包 iTextAsian.jar--------------------解决word样式、编码问题扩展包 1、设置标题样式 public static Paragraph setParagraphTitle(String content,Font contentFont){ Paragraph p = new Paragraph(content, contentFont); p.setAlignment(Table.ALIGN_CENTER); p.setIndentationLeft(60); p.setIndentationRight(60); p.setSpacingBefore(20); return p; } 2、设置内容样式:

public static Paragraph setParagraphStyle(String content,Font contentFont){ Paragraph p = new Paragraph(content, contentFont); p.setFirstLineIndent(40);// 首行缩进 p.setAlignment(Paragraph.ALIGN_JUSTIFIED);// 对齐方式 p.setLeading(30);// 行间距 p.setIndentationLeft(60);// 左边距,右边距 p.setIndentationRight(60); return p; } 3、设置文档末尾时间: public static Paragraph setParagraphTime(Font contentFont){ Paragraph p = new Paragraph(FormatUtil.getCurrentDate(), contentFont); p.setIndentationLeft(250); p.setIndentationRight(60); p.setLeading(30); p.setFirstLineIndent(40); return p; } 4、开始写word文档咯: public static void WriteDoc(String path,Map map){ Document document = null; try { File file = new File(path); if (!file.exists()) { file.createNewFile(); } document = new Document(PageSize.A4); RtfWriter2.getInstance(document, new FileOutputStream(file)); document.open(); // 设置title body 中文字体及样式 BaseFont cnFont = BaseFont.createFont("STSongStd-Light","UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); Font titleFont = new Font(cnFont,22, Font.NORMAL, new

java读取word文档

java读取word文档时,虽然网上介绍了很多插件poi、java2Word、jacob、itext等等,poi无法读取格式(新的API估计行好像还在处于研发阶段,不太稳定,做项目不太敢用);java2Word、jacob容易报错找不到注册,比较诡异,我曾经在不同的机器上试过,操作方法完全一致,有的机器不报错,有的报错,去他们论坛找高人解决也说不出原因,项目部署用它有点玄;itxt好像写很方便但是我查了好久资料没有见到过关于读的好办法。经过一番选择还是折中点采用rtf最好,毕竟rtf是开源格式,不需要借助任何插件,只需基本IO操作外加编码转换即可。rtf格式文件表面看来和doc没啥区别,都可以用word打开,各种格式都可以设定。 ----- 实现的功能:读取rtf模板内容(格式和文本内容),替换变化部分,形成新的rtf文档。 ----- 实现思路:模板中固定部分手动输入,变化的部分用$info$表示,只需替换$info$即可。 1、采用字节的形式读取rtf模板内容 2、将可变的内容字符串转为rtf编码 3、替换原文中的可变部分,形成新的rtf文档 主要程序如下: /** * 将制定的字符串转换为rtf编码 */ public String bin2hex(String bin) { char[] digital = "0123456789ABCDEF".toCharArray(); StringBuffer sb = new StringBuffer(""); byte[] bs = bin.getBytes(); int bit; for (int i = 0; i < bs.length;i++) { bit = (bs[i] & 0x0f0) >> 4; sb.append("\\'"); sb.append(digital[bit]); bit = bs[i] & 0x0f;

JAVA生成word文档代码加说明

import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.Iterator; import java.util.Map; import javax.servlet.http.HttpServletResponse; import org.apache.poi.hwpf.HWPFDocument; import org.apache.poi.hwpf.model.FieldsDocumentPart; import https://www.wendangku.net/doc/8c1152715.html,ermodel.Field; import https://www.wendangku.net/doc/8c1152715.html,ermodel.Fields; import https://www.wendangku.net/doc/8c1152715.html,ermodel.Range; import https://www.wendangku.net/doc/8c1152715.html,ermodel.Table; import https://www.wendangku.net/doc/8c1152715.html,ermodel.TableIterator; import https://www.wendangku.net/doc/8c1152715.html,ermodel.TableRow; publicclass WordUtil { publicstaticvoid readwriteWord(String filePath, String downPath, Map map, int[] num, String downFileName) { //读取word模板 FileInputStream in = null; try { in = new FileInputStream(new File(filePath)); } catch (FileNotFoundException e1) { e1.printStackTrace(); } HWPFDocument hdt = null; try { hdt = new HWPFDocument(in); } catch (IOException e1) { e1.printStackTrace(); } Fields fields = hdt.getFields(); Iterator it = fields.getFields(FieldsDocumentPart.MAIN) .iterator(); while (it.hasNext()) { System.out.println(it.next().getType()); }

java+根据word模板生成word+文档

java 根据word模板生成word 文档 先下载jacob_1.10.1.zip。 解压后将jacob.dll放到windows/system32下面或\j2sdk\bin下面。 将jacob.jar加入项目。 /* * Java2word.java * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ /* * 传入数据为HashMap对象,对象中的Key代表word模板中要替换的字段,Value代表用来替换的值。* word模板中所有要替换的字段(即HashMap中的Key)以特殊字符开头和结尾,如:$code$、$date$……,以免执行错误的替换。 * 所有要替换为图片的字段,Key中需包含image或者Value为图片的全路径(目前只判断文件后缀名为:.bmp、 .jpg、.gif)。 * 要替换表格中的数据时,HashMap中的Key格式为“table$R@N”,其中:R代表从表格的第R行开始替换,N代表 word模板中的第N张表格;Value为ArrayList对象,ArrayList中包含的对象统一为String[],一条String[]代 表一行数据,ArrayList中第一条记录为特殊记录,记录的是表格中要替换的列号,如:要替换第一列、第三列、 第五列的数据,则第一条记录为String[3] {“1”,”3”,”5”}。 */ package com.word.util; /** * * @author kdl */ import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import com.jacob.activeX.ActiveXComponent; import https://www.wendangku.net/doc/8c1152715.html,.Dispatch; import https://www.wendangku.net/doc/8c1152715.html,.Variant; public class Java2word { private boolean saveOnExit; /**

相关文档
相关文档 最新文档