java实现在线预览--之poi实现word、excel、ppt转html

java实现在线预览--之poi实现word、excel、ppt转html
java实现在线预览--之poi实现word、excel、ppt转html

java实现在线预览- -之poi实现word、excel、ppt转html

java实现在线预览

- -之poi实现word、excel、ppt转html

简介

java实现在线预览功能是一个大家在工作中也许会遇到的需求,如果公司有钱,直接使用付费的第三方软件或者云在线预览服务就可以了,例如永中office、office web

365(https://www.360docs.net/doc/9412291954.html,/)他们都有云在线预览服务,就是要钱0.0

如果想要免费的,可以用openoffice,还需要借助其他的工具(例如swfTools、FlexPaper等)才行,可参考这篇文章https://www.360docs.net/doc/9412291954.html,/z69183787/article/details/17468039,写的挺细的,实现原理就是:

1.通过第三方工具openoffice,将word、excel、ppt、txt等文件转换为pdf文件;

2.通过swfTools将pdf文件转换成swf格式的文件;

3.通过FlexPaper文档组件在页面上进行展示。

当然如果装了Adobe Reader XI,那把pdf直接拖到浏览器页面就可以直接打开预览,这样就不需要步骤2、3了,前提就是客户装了Adobe Reader XI这个pdf阅读器。

我这里介绍通过poi实现word、excel、ppt转html,这样就可以放在页面上了。

word转html

package wordToHtml;

import java.io.ByteArrayOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.util.List;

import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.OutputKeys;

import javax.xml.transform.Transformer;

import javax.xml.transform.TransformerFactory;

import javax.xml.transform.dom.DOMSource;

import javax.xml.transform.stream.StreamResult;

import https://www.360docs.net/doc/9412291954.html,mons.io.FileUtils;

import org.apache.poi.hwpf.HWPFDocument;

import org.apache.poi.hwpf.converter.PicturesManager; import

org.apache.poi.hwpf.converter.WordToHtmlConverter; import https://www.360docs.net/doc/9412291954.html,ermodel.Picture;

import https://www.360docs.net/doc/9412291954.html,ermodel.PictureType; import org.w3c.dom.Document;

public class PoiWordToHtml {

public static void main(String[] args) throws Throwable { final String path = "D:\\poi-test\\wordToHtml\\";

final String file = "人员选择系分.doc";

InputStream input = new FileInputStream(path + file); HWPFDocument wordDocument = new HWPFDocument(input);

WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(

DocumentBuilderFactory.newInstance().newDocumentBuil der()

.newDocument());

wordToHtmlConverter.setPicturesManager(new PicturesManager() {

public String savePicture(byte[] content, PictureType pictureType,

String suggestedName, float widthInches, float heightInches) {

return suggestedName;

}

});

wordToHtmlConverter.processDocument(wordDocument); List pics =

wordDocument.getPicturesTable().getAllPictures();

if (pics != null) {

for (int i = 0; i < pics.size(); i++) {

Picture pic = (Picture) pics.get(i);

try {

pic.writeImageContent(new FileOutputStream(path

+ 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, "utf-8");

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(path, "人员选择系分.html"), content, "utf-8");

}

}1234567891011121314151617181920212223242526272 8293031323334353637383940414243444546474849505 15253545556575859606162636465

excel转html

package excelToHtml;

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.InputStream;

import java.util.List;

import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.OutputKeys;

import javax.xml.transform.Transformer;

import javax.xml.transform.TransformerFactory;

import javax.xml.transform.dom.DOMSource;

import javax.xml.transform.stream.StreamResult;

import https://www.360docs.net/doc/9412291954.html,mons.io.FileUtils;

import

org.apache.poi.hssf.converter.ExcelToHtmlConverter; import https://www.360docs.net/doc/9412291954.html,ermodel.HSSFWorkbook; import org.apache.poi.hwpf.converter.PicturesManager; import

org.apache.poi.hwpf.converter.WordToHtmlConverter; import https://www.360docs.net/doc/9412291954.html,ermodel.Picture;

import https://www.360docs.net/doc/9412291954.html,ermodel.PictureType; import org.w3c.dom.Document;

public class PoiExcelToHtml {

final static String path = "D:\\poi-test\\excelToHtml\\";

final static String file = "exportExcel.xls";

public static void main(String args[]) throws Exception {

InputStream input=new FileInputStream(path+file);

HSSFWorkbook excelBook=new

HSSFWorkbook(input);

ExcelToHtmlConverter excelToHtmlConverter = new ExcelToHtmlConverter

(DocumentBuilderFactory.newInstance().newDocumentBu ilder().newDocument() );

excelToHtmlConverter.processWorkbook(excelBook);

List pics = excelBook.getAllPictures();

if (pics != null) {

for (int i = 0; i < pics.size(); i++) {

Picture pic = (Picture) pics.get (i);

try {

pic.writeImageContent (new FileOutputStream (path + pic.suggestFullFileName() ) );

} catch (FileNotFoundException e) {

e.printStackTrace();

}

}

}

Document htmlDocument

=excelToHtmlConverter.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, "utf-8");

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 (path, "exportExcel.html"), content, "utf-8");

}

}1234567891011121314151617181920212223242526272 8293031323334353637383940414243444546474849505 15253545556575859606162636465

ppt转html

其实只是ppt转图片,有了图片后放到页面上去,点击下一页就一张张显示就可以了。这里只介绍ppt转图片的过程。package pptToImg;

import java.awt.Dimension;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.awt.Color;

import java.awt.Dimension;

import java.awt.Graphics2D;

import java.awt.geom.Rectangle2D;

import java.awt.image.BufferedImage;

import org.apache.poi.hslf.model.TextRun;

import org.apache.poi.hslf.record.Slide;

import https://www.360docs.net/doc/9412291954.html,ermodel.RichTextRun; import https://www.360docs.net/doc/9412291954.html,ermodel.SlideShow;

public class PPTtoImage {

public static void main(String[] args) {

// 读入PPT文件

File file = new

File("D:/poi-test/pptToImg/test.ppt");

doPPTtoImage(file);

}

public static boolean doPPTtoImage(File file) {

boolean isppt = checkFile(file);

if (!isppt) {

System.out.println("The image you specify don't exit!");

return false;

}

try {

FileInputStream is = new

FileInputStream(file);

SlideShow ppt = new SlideShow(is);

is.close();

Dimension pgsize = ppt.getPageSize();

org.apache.poi.hslf.model.Slide[] slide = ppt.getSlides();

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

System.out.print("第" + i + "页。");

TextRun[] truns = slide[i].getTextRuns();

for ( int k=0;k

RichTextRun[] rtruns =

truns[k].getRichTextRuns();

for(int l=0;l

int index =

rtruns[l].getFontIndex();

String name =

rtruns[l].getFontName();

rtruns[l].setFontIndex(1);

rtruns[l].setFontName("宋体"); //

System.out.println(rtruns[l].getText());

}

}

BufferedImage img = new BufferedImage(pgsize.width,pgsize.height, BufferedImage.TYPE_INT_RGB);

Graphics2D graphics =

img.createGraphics();

graphics.setPaint(Color.BLUE);

graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));

slide[i].draw(graphics);

// 这里设置图片的存放路径和图片的格

式(jpeg,png,bmp等等),注意生成文件路径

FileOutputStream out = new FileOutputStream("D:/poi-test/pptToImg/pict_"+ (i + 1) + ".jpeg");

javax.imageio.ImageIO.write(img, "jpeg", out);

out.close();

}

System.out.println("success!!");

return true;

} catch (FileNotFoundException e) {

System.out.println(e);

// System.out.println("Can't find the image!");

} catch (IOException e) {

}

return false;

}

// function 检查文件是否为PPT

public static boolean checkFile(File file) {

boolean isppt = false;

String filename = file.getName();

String suffixname = null;

if (filename != null && filename.indexOf(".") != -1) { suffixname =

filename.substring(filename.indexOf("."));

if (suffixname.equals(".ppt")) {

isppt = true;

}

return isppt;

} else {

return isppt;

}

}

} 1234567891011121314151617181920212223242526272 8293031323334353637383940414243444546474849505 1525354555657585960616263646566676869707172737 47576777879808182838485868788899091

如何能让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标记

word文档转换成excel表格

竭诚为您提供优质文档/双击可除word文档转换成excel表格 篇一:如何把word中制作好的表格转换成excel表格如何把word中制作好的表格转换成excel表格 第一种: 1、打开excel,将光标定位到单元格,点击菜单栏的插入按钮-对象-在新建中,选择对象类型为microsoftword文档。 2、将word表格整体选中,复制到剪贴板上后,打开一个excel工作薄,在一张新工作表上,选中a1单元,然后,粘贴即可。 例如,一份已经在word中编辑好价格表,需要以excel 表格形式报出。但是,如果word表格的单元格中,有多段文字,用上述方法转换会出问题。即,word表格粘贴到excel 后,有多段文字的单元格,会显示出是,有多个单元格组成的,仅仅是它们之间的单元格框线“隐藏”(视图上显示灰色,不打印)了。 更麻烦的是,那个单元格所在行的其它单元格,均为成为合并单元格。原来word表格的一行,在excel中,“占用”

了多行。不但难看,且给编辑带来诸多不便。 解决方法是: 第一步.在word中,用“编辑”·“替换”命令,将所有单元格中的分段取消。即,在“查找和替换”对话框的“替换”选项卡上,“查找内容”框中输入(特殊字符)段落标记,且让“替换为”框中空白,然后单击“全部替换”。 第2步.将word表格整体选中,复制到剪贴板上后,打开一个excel工作薄,在一张新工作表上,选中a1单元,然后,粘贴。 第3步.在内容需要分段的单元格中,用快捷键-“alt +enter”分段。 提示:不能在excel中,采用合并单元格的方法,来解决问题。因为,单元格合并后,只能保留,原位于左上方的那个单元格中的内容,其它单元格中的内容会被删除。 第二种: 步骤:先在word里选中你的文档(ctrl+a全选),点击“表格-转换-文字转换成表格”文字分隔位置选择“段落标记”-确定-再将内容拷贝至excel即可。 篇二:如何将excel表格整体转换成word文档 如何将excel表格整体转换成word文档

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转成excel表格

如何把word 转成excel 1 、在Word 中选中整个表格,按Ctrl+C 复制; 2、在Excel 中单击A1 单元格,Ctrl+V 粘贴; 3、这时,表格默认也已经加上了边框,就可以跟Excel 中建立的工作表一样进行计算了 假设你说的第一列是A 列,第二列是B,第三列是C,每一 列的第一个数据都是在第一行,则在C1 单元输入:"=A1 *B1 ",回车后再鼠标拖动C1 右下角的小黑点,拖到你想要的那一行为止 1 、EXCEL 中插入——对象-----文件创建………找到DOC 文件 2、如果word 中有规范的表格内容,我们想用原来的资料建数据库,建议另存为---- 文本文件 EXCEL 中数据---获取外部数据----导入文本文件……… 通常下就是直接相互复制就能实现你的目的,但我认为你不可能提这么无聊的 问题! 先说WORD 中将数据转化成表格你可以选中所有数据用“表格—转换—文本转换成 表格”这里可以用“空格”,“其他符号”等条件就数据转化为你想用的格式!在拷贝到你EXCEL 中编辑! 下来EXCEL 只是上述逆操作,就编辑好的表格数据复制到WORD 中然后就“表格 —转换—表格转换为文本”应该就能搞定好你要的数据编辑了! 在着你可以将处理好的EXCEL 数据以表格的形式插入到WORD 中,以图表的形式 来输出,直接双击可以直接编辑!当你确定编辑好后可以用“CTRL+SHIFT+F9”组合 键将数据转换成图片,让别人无从看出你的操作秘密! 首先备份你的word 文件。这很重要,一旦操作失误,还可以恢复,否则后果 自负。 用全部替换法,将各个表格之间的多余段落标记去掉。如原来有些表格之间可能有 两个或多个段落标记符,可以用替换法删除。查找内容中输入^p^p,替换为中输入 ^p。反复全部替换多次,就可删除多余的段落标记了。如果还有特殊的标记,如果 这种标记能在记事本中显示,最好保留。这样可以省去后面的宏命令。如果这种标 记不能为记事本识别,就必须要删除。因为这里的办法就是借用文本文件进行转化。 那些特殊字符,在你运行替换命令时,点高级,在特殊符号中一般能找到,自己找吧。 全选,表格-->转换-->文本转换为表格,表格-->转换-->表格转换为文本。 转换时用默认设置就可以。 经过两步转换,原来的每个单元格都变成了一个独立的段落。 由于每张表的格式应该是完全相同的,可以用宏命令再次进行转换。 估计你需要的最终格式是在excel 表中,每个人的信息占用一行。那么们需要做的 就是将同一个人的信息变为一个段落,原来的每个单元格之间用特定的符号标识。 再次运行一次编辑-->替换,在查找内容中输入^p,替换为中输入^t 或者其它的在整 个word 中不可能有的字符(如※),点击替换,使之替换一次,再按编辑-->撤销恢复 到未替换之前的状态,将光标放于文档开头处。这一点很重要,这一步是为了让word 记住你替换的状态,为下一步的宏录制打下一个良好的基础。 下面开始录制宏。工具-->宏-->录制新宏,点键盘,为你录制的宏指定一个快捷键(如 f1 2),将更改保存在中选择你当前的文档(不要选normal,否则会影响你今后的工作)。当箭头形光标上带有一个磁带形的标识时,说明已开始录制宏。此时的操作一定要

(完整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。

EXCEL转WORD,WORD转EXCEL

EXCEL转WORD,WORD转EXCEL 首先,用Excel编辑好一个表格,然后点击“文件”→“另存为web 页”。web页就是网页文件,在“保存选项”处把“保存整个工作簿”调整成“选择:工作表”,把默认文件名“page.htm”根据实际情况改成你所需要的名字,如:“工作表.htm”,再点击“保存”。注意,在改名时绝对不可以把后面的.htm去掉,只要改“.”前面的部分就可以了。 找到刚才保存好的“工作表.htm”,如果你所安装的操作系统是WindowsXP或Windows2000,可以在文件上面直接点击鼠标右键,选择“打开方式”最下面的“打开程序”选项,在列表中找到“Word”,选中并确定。如果你所使用的操作系统是windows98,则操作方法略有不同,需要在“工作表.htm”上按住shift键的同时点击鼠标右键,之后再进行上述操作。 用Word程序打开该文件后,不要做任何编辑操作,直接点击“文件”→“另存为”,把文件名改成“工作表Word版”,把保存类 型选成“Word文档”,再点击“保存”即可。 其次,复制EXCEL中内容,再打开WORD,插入-对象-Microsost Excel工作表确定,此时有多少格就拉多少格,再贴上即可。 第一步,在Word中,用“编辑”·“替换”命令,将所有单元格中的分段取消。即,在“查找和替换”对话框的“替换”选项卡上,“查找内容”框中输入(特殊字符)段落标记,且让“替换为”框中空白,然后

单击“全部替换”。 第二步,将Word表格整体选中,复制到剪贴板上后,打开一个Excel工作薄,在一张新工作表上,选中A1单元,然后,粘贴。 第三步,在内容需要分段的单元格中,用快捷键-“Alt+Enter”分段。 提示:不能在Excel中,采用合并单元格的方法,来解决问题。因为,单元格合并后,只能保留,原位于左上方的那个单元格中的内容,其它单元格中的内容会被删除。 WORD转EXCEL 将在Word中制作好的表格转换成Excel表格,似乎很简单,其实也不容忽视。例如,一份已经在Word中编辑好成绩表,需要以Excel表格形式报出。 一般说来,只要将Word表格整体选中,复制到剪贴板上后,打开一个Excel 工作薄,在一张新工作表上,选中A1单元,然后,粘贴即可。但是,如果Word 表格的单元格中,有多段文字,用上述方法转换会出问题。即,Word表格粘贴到Excel后,有多段文字的单元格,会显示出是,有多个单元格组成的,仅仅是它们之间的单元格框线“隐藏”(视图上显示灰色,不打印)了。更麻烦的是,那个单元格所在行的其它单元格,均为成为合并单元格。原来Word表格的一行,在Excel中,“占用”了多行。不但难看,且给编辑带来诸多不便。 解决方法是: 第一步,在Word中,用“编辑”·“替换”命令,将所有单元格中的分段取消。即:在“查找和替换”对话框的“替换”选项卡上,“查找内容”框中输入(特殊字符)段落标记,且让“替换为”框中空白,然后单击“全部替换”。 第二步,将Word表格整体选中,复制到剪贴板上后,打开一个Excel工作薄,在一张新工作表上,选中A1单元,然后,粘贴。 第三步,在内容需要分段的单元格中,用快捷键-“Alt+Enter”分段。 提示:不能在Excel中,采用合并单元格的方法,来解决问题。因为,单元格合并后,只能保留,原位于左上方的那个单元格中的内容,其它单元格中的内容会被删除。

java操作word(内部资料)

JAVA操作word Java操作Microsoft Word之jacob(1) 现在我们一起来看看,用J1ava如何操作Microsoft Word。 jacob,官网是https://www.360docs.net/doc/9412291954.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.360docs.net/doc/9412291954.html,.Variant maps to https://www.360docs.net/doc/9412291954.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.360docs.net/doc/9412291954.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.360docs.net/doc/9412291954.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.360docs.net/doc/9412291954.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

如何把Word中制作好的表格转换成Excel表格

如何把Word中制作好的表格转换成Excel表格 第一种: 1、打开EXCEL,将光标定位到单元格,点击菜单栏的插入按钮-对象-在新建中,选择对象类型为 Microsoft Word 文档。 2、将Word表格整体选中,复制到剪贴板上后,打开一个Excel工作薄,在一张新工作表上,选中A1单元,然后,粘贴即可。 例如,一份已经在Word中编辑好价格表,需要以Excel表格形式报出。但是,如果Word表格的单元格中,有多段文字,用上述方法转换会出问题。即,Word表格粘贴到Excel后,有多段文字的单元格,会显示出是,有多个单元格组成的,仅仅是它们之间的单元格框线“隐藏”(视图上显示灰色,不打印)了。 更麻烦的是,那个单元格所在行的其它单元格,均为成为合并单元格。原来Word表格的一行,在Excel中,“占用”了多行。不但难看,且给编辑带来诸多不便。 解决方法是: 第1步.在Word中,用“编辑”·“替换”命令,将所有单元格中的分段取消。即,在“查找和替换”对话框的“替换”选项卡上,“查找内容”框中输入(特殊字符)段落标记,且让“替换为”框中空白,然后单击“全部替换”。 第2步.将Word表格整体选中,复制到剪贴板上后,打开一个Excel 工作薄,在一张新工作表上,选中A1单元,然后,粘贴。 第3步.在内容需要分段的单元格中,用快捷键-“Alt+Enter”分段。

提示:不能在Excel中,采用合并单元格的方法,来解决问题。因为,单元格合并后,只能保留,原位于左上方的那个单元格中的内容,其它单元格中的内容会被删除。 第二种: 步骤:先在Word里选中你的文档(Ctrl+A全选),点击“表格-转换-文字转换成表格”文字分隔位置选择“段落标记”-确定-再将内容拷贝至Excel即可。

JAVA导出WORD与EXCEL

package ais.mytest.web; /** * 功能:主要实现数据导出Excel和Word功能* 日期:2008-2-28 */ import ais.basic.service.BasicUtil; import https://www.360docs.net/doc/9412291954.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.360docs.net/doc/9412291954.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.360docs.net/doc/9412291954.html,.Dispatch; import https://www.360docs.net/doc/9412291954.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.360docs.net/doc/9412291954.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("标题");

excel和word格式的表格互相转换

excel和word格式的表格互相转换 Excel强大的制表功能让很多办公一族都忘不了它的方便与实用。可是在一些情况下,我们必须将Excel表格转换成Word文档,例如个人简历表格一般都是doc文档。当前普遍的做法是:先用Excel做好表格,再把表格粘到Wo简历模板rd里。可是粘到Word里后表的格式全变了,还得重新进行调试,费时又费力。其实,小编提醒大家完全可以按下述方法来轻松转换。 首先,用Excel编辑好个人的简历表,然后点击“文件”→“另存为web页”。web页就是网页文件,在“保存选项”处把“保存整个工作簿教师个人简历范文”调整excel库存表格模板成“选择:工作表”,把默认文件名“”根据实际情况改成你所需要的名字,如:“工作表.htm”,再点击“保存”。注意,在改名时绝对不可以把后面的.htm去掉,只要改“.”前面的部分就可以了。 找到刚才保存好的“工作表.htm”,如果你所安装的操作系统是WindowsXP或Windows2000,可以在文件上面直接点击鼠标右键,选择“打开方式”最下面的“打开程序”选项,

在列表中找到“Word”,选中并确定。 用Word程序打开转换后的简历表格模板文件后,不要做任何编辑操作,直接点击“文件”→“另存为”,把文件名改成“工作表Word版”,把保存类型选成“Word文档”,再点击“保存”即可。 现在再打开刚才保存的“工作表word版”文件看看,是不是转换得很完美呢? 将在Word中制作好的表格转换成Excel表格,是一件看似很普通的工作。 例如,一份已经在Word中编辑好价格表,需要以Excel 表格形式报出。 一般说来,只要将Word表格整体选中,复制到剪贴板上后,打开一个Excel工作薄,在一张新工作表上,选中A1单元,然后,粘贴即可。 但是,如果Word表格的单元格中,有多段文字,用上述方法转换会出问题。即, Word表格粘贴到Excel后,有多段文字的单元格,会显示出是,有多个单元格组成的,仅仅是它们之间的单元格框线“隐藏”(视图上显示灰色,不打印)了。

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.360docs.net/doc/9412291954.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;

怎样将word、excel文件转换为PDF文件

? 随着PDF格式文件使用的范围越来越广,我们有时候就需要将其他格式的文件转换成PDF文件使用,例如将WORD、excel、ppt 等格式的转换成PDF格式,这里我们就讲怎么转换这些文件到PDF文件。 工具/原料 ?Adobe acrobat pro 8或者以上版本 ?PDF虚拟打印机(例如:PDFfactory Pro 、doPDF、PDF Creator、tinyPDF 等等) ?Microsoft OFFICE 2007或者2010 ?WPS 2007及以上版本 ?文电通PDF plus 9及其他软件 步骤/方法 1.Adobe acrobat pro 8或者以上版本本 人推荐使用等级★★★☆ Adobe acrobat 软件是PDF格式的官方编辑软件,功能很是强大的,软件安装完以后会在你的word、excel软件中加载一个快捷图标,你如果想转换的话可以直接在word、excel等里面点击这个按键将你当前打开的 word、excel、ppt等转换为PDF,此处我讲的是从adobe acrobat软件自身中转换PDF文件。如下图,运行软件点击创建PDF------从文件然后选中你的文件软件就开始直接创建了,如果文件比较大那么你要耐心地等上一会儿,转换完成后直接点保存,保存下来就是PDF格式的了。如下图

如果是要从多个文件创建PDF的话会有如下对话框出来,你选择添加好你要转换的文件(文件的前后顺序用上下箭头调整)然后下一步,组合保存下来就是PDF格式的文件了。

1.PDF虚拟打印机(此处我们以PDF factory pro为例,其他各种PDF打 印机操作基本都差不多.安装前请确认系统的打印服务“Print Spooler”不是禁用状态!某些优化软件会禁用打印服务而导致安装失败!)本人推荐使用等级★★★★☆ 首先是安装软件,装完以后去控制面板--------打印机那项查看里面应该会有一个新增加的名为PDFfactory pro的打印机如右图,不同的PDF虚拟打印机生成的打印机的名字也不一样。 然后就是转换了,如果我们要转换word文件,那么我们先双击打开要转换的word文件,然后文件-----打印弹出打印界面,打印机那项选择新安装的pdffactory pro 打印机(这一步是关键),其他默认就可以了 如图 然后点确定就可以了,弹出PDFfactory pro的界面,带有预览的你只要点下面的保存,然后保存下来就是PDF文件了。PDF factory 功能比较强大,里面有很多设置的项目包括字体内嵌、加密等等,还有就是最重要的一点就是PDF factory即使你不注册也可以一直使用,只是会在你生成的PDF文件的最下方多一个红色公司链接而已,如果是自己使用就无所谓啦。 当然,也有免费版的PDF虚拟打印机,例如:doPDF 这种方法的通用性比较强,理论上任何电子版的文件只要可以打印的都是可以通过这个方法来实现转成PDF文件的,例如:CAD文件、PPT文件、PCB文件、图片格式、网页等等。 2.Microsoft OFFICE 2007或者2010 本 人推荐使用等级★★★★ 如果你使用的是微软的office2007或者最新的2010软件,那么恭喜你,你要将word、excel等office类的文件转换成PDF就十分方便了。

相关文档
最新文档