- 浏览: 1579084 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
nich002:
原网站失效了。撸主简单粗暴的复制过来,可读性极差!差评!
Apache配置详解(最好的APACHE配置教程) -
107x:
不错,谢谢!
LINUX下查看文件夹下的文件个数! -
Hypereo:
好你妹,连个格式都没有!
Apache配置详解(最好的APACHE配置教程) -
resteater:
代码排版感觉有点乱!收发信息代码可读性不强!请问第一次发服务器 ...
java socket例子 -
resteater:
代码排版感觉有点乱!收发信息代码可读性不强!请问第一次发服务器 ...
java socket例子
From: http://www.xrss.cn/Info/15191.Html
用java生成word文档
java
作者 javasky @ 2006-06-10 14:22:04
我也是好久之前找的,自己改改吧:)
用java生成word文档
java
作者 javasky @ 2006-06-10 14:22:04
这几日, 公司有个项目, 要用java生成word文档, 在网上找来找去也没有找到好的生成word文档的库, 找到apache的POI可以使用, 但是所有的release版中也没有支持word的class. 只能从svn上下载源代码编译. 后来发现java支持rtf格式的文档, word也支持, 于是乎便使用此产生word文档了. 呵呵.. java支持的rtf文档功能不是很强大, 我们可以借助于一些开源的库, 比如: itext就可以很好的支持. itext上有很多例子, 有兴趣的可以上去看一下, 这里就不摘录了. 但是itext比较大要1.4M, 不是很喜欢. 在sf上找来找去, 发现一个更小的库, 尽管功能不是很强大, 基本的功能都有, 他就是srw(Simple RTF Writer目前它的版本是0.6,好久都没有人维护了). srw内置了很多例子, 例如: 我们要写一个简单的rtf, 我们只需要这么写: public class TestSimpleRtf { private static final String FILE_NAME = "out_testsimplertf.rtf"; public static void main(String[] args) { try { // RTF Dokument generieren (in Querformat) RTFDocument doc = new RTFDocument(PageSize.DIN_A4_QUER); // Anzeige-Zoom und Ansicht definieren doc.setViewscale(RTFDocument.VIEWSCALE_FULLPAGE); // Anzeige-Zoom auf "komplette Seite" einstellen doc.setViewkind(RTFDocument.VIEWKIND_PAGELAYOUT); // ViewMode auf Seitenlayout stellen Paragraph absatz = new Paragraph(18, 0, 16, Font.ARIAL, new TextPart("Simple RTF Writer Testdokument")); absatz.setAlignment(Paragraph.ALIGN_CENTER); doc.addParagraph(absatz); File savefile = new File(FILE_NAME); doc.save(savefile); System.out.println("Neues RTF Dokument erstellt: " + savefile.getAbsolutePath()); } catch (IOException e) { e.printStackTrace(); } } } 用法很简单, 但是功能很少, 比如没有table的功能, 不能设置打印方向等问题. 不过这个基本上就够用了. 后来, 我们的项目要求横向打印, 这可难坏了. 没办法, 自己查找word的rtf格式库, 拓展横向打印功能, 目前已经完成... import com.itseasy.rtf.RTFDocument; import com.itseasy.rtf.text.PageSize; public class MyRTFDocument extends RTFDocument { public static final int ORIENTATION_PORTRAIT = 0; public static final int ORIENTATION_LANDSCAPE = 1; private int orientation; /** * */ public MyRTFDocument() { super(); } /** * @param arg0 */ public MyRTFDocument(PageSize arg0) { super(arg0); } /* (non-Javadoc) * @see com.itseasy.rtf.RTFDocument#getDocumentAsString() */ protected String getDocumentAsString() { StringBuffer sb = new StringBuffer(super.getDocumentAsString()); int pos = -1; if (ORIENTATION_LANDSCAPE == orientation) { pos = sb.indexOf("paperw"); if (pos > 0) { sb.insert(pos, "lndscpsxn"); } } pos = 0; while((pos = sb.indexOf("pardplain", pos)) > 0){ pos = sb.indexOf("{", pos); sb.insert(pos, "dbchaf2"); } return sb.toString(); } /** * @return Returns the orientation. */ public int getOrientation() { return orientation; } /** * @param orientation The orientation to set. */ public void setOrientation(int orientation) { this.orientation = orientation; } } 在最近的一个项目中需要将一段字符类型的文本存为word,html并要将word的内容保存在数据库中,于是就有了如下的一个工具类,希望能对碰到这样需求的朋友提供点帮助。 匆匆忙忙的就copy上来了,没有做一些删减,有一些多余的东西,有兴趣的朋友可以自行略去。我的注释相对比较清楚,可以按照自己的需求进行组合。 在操作word的地方使用了jacob(jacob_1.9),这个工具网上很容易找到,将jacob.dll放置系统Path中,直接放在system32下也可以,jacob.jar放置在classPath中。 代码如下:WordBridge.java /** * WordBridge.java */ package com.kela.util; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.sql.Connection; import java.sql.PreparedStatement; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import com.jacob.activeX.ActiveXComponent; import com.jacob.com.Dispatch; import com.jacob.com.Variant; import com.kela.db.PoolingDataSource; /** * 说明: 对word的操作 * * @author kela.kf@gmail.com */ public class WordBridge { Log log = LogFactory.getLog("WordBridgt"); private ActiveXComponent MsWordApp = null; private Dispatch document = null; /** * 打开word * @param makeVisible, true显示word, false不显示word */ public void openWord(boolean makeVisible) { if (MsWordApp == null) { MsWordApp = new ActiveXComponent("Word.Application"); } Dispatch.put(MsWordApp, "Visible", new Variant(makeVisible)); } /** * 创建新的文档 * */ public void createNewDocument() { Dispatch documents = Dispatch.get(MsWordApp, "Documents").toDispatch(); document = Dispatch.call(documents, "Add").toDispatch(); } /** * 关闭文档 */ public void closeDocument() { // 0 = wdDoNotSaveChanges // -1 = wdSaveChanges // -2 = wdPromptToSaveChanges Dispatch.call(document, "Close", new Variant(0)); document = null; } /** * 关闭word * */ public void closeWord() { Dispatch.call(MsWordApp, "Quit"); MsWordApp = null; document = null; } /** * 插入文本 * @param textToInsert 文本内容 */ public void insertText(String textToInsert) { Dispatch selection = Dispatch.get(MsWordApp, "Selection").toDispatch(); Dispatch.put(selection, "Text", textToInsert); } /** * 保存文件 * @param filename */ public void saveFileAs(String filename) { Dispatch.call(document, "SaveAs", filename); } /** * 将word转换成html * @param htmlFilePath */ public void wordToHtml(String htmlFilePath) { Dispatch.invoke(document,"SaveAs", Dispatch.Method, new Object[]{htmlFilePath,new Variant(8)}, new int[1]); } /** * 保存word的同时,保存一个html * @param text 需要保存的内容 * @param wordFilePath word的路径 * @param htmlFilePath html的路径 * @throws LTOAException */ public void wordAsDbOrToHtml(String text, String wordFilePath, String htmlFilePath) throws LTOAException { try { openWord(false); createNewDocument(); insertText(text); saveFileAs(wordFilePath); wordToHtml(htmlFilePath); } catch (Exception ex) { log.error("错误 - 对word的操作发生错误"); log.error("原因 - " + ex.getMessage()); throw new LTOAException(LTOAException.ERR_UNKNOWN, "对word的操作发生错误(" + this.getClass().getName() + ".wordAsDbOrToHtml())", ex); } finally { closeDocument(); closeWord(); } } /** * 将word保存至数据库 * @param wordFilePath * @param RecordID * @throws LTOAException */ public void wordAsDatabase(String wordFilePath, String RecordID) throws LTOAException { Connection conn = null; PreparedStatement pstmt = null; PoolingDataSource pool = null; File file = null; String sql = ""; try { sql = " UPDATE Document_File SET FileBody = ? WHERE RecordID = ? "; pool = new PoolingDataSource(); conn = pool.getConnection(); file = new File(wordFilePath); InputStream is = new FileInputStream(file); byte[] blobByte = new byte[is.available()]; is.read(blobByte); is.close(); pstmt = conn.prepareStatement(sql); pstmt.setBinaryStream(1,(new ByteArrayInputStream(blobByte)), blobByte.length); pstmt.setString(2, RecordID); pstmt.executeUpdate(); } catch (Exception ex) { log.error("错误 - 表 Document_File 更新数据发生意外错误"); log.error("原因 - " + ex.getMessage()); throw new LTOAException(LTOAException.ERR_UNKNOWN, "表Document_File插入数据发生意外错误(" + this.getClass().getName() + ".wordAsDatabase())", ex); } finally { pool.closePrepStmt(pstmt); pool.closeConnection(conn); } } /** * 得到一个唯一的编号 * @return 编号 */ public String getRecordID() { String sRecordID = ""; java.util.Date dt=new java.util.Date(); long lg=dt.getTime(); Long ld=new Long(lg); sRecordID =ld.toString(); return sRecordID; } 该文章转载自网络大本营:http://www.xrss.cn/Info/15191.Html
评论
2 楼
liudaoru
2010-06-08
softor 写道
能提供SRW下载不?
dodo@lovehang.com
dodo@lovehang.com
我也是好久之前找的,自己改改吧:)
1 楼
softor
2010-06-08
能提供SRW下载不?
dodo@lovehang.com
dodo@lovehang.com
发表评论
-
JVM问题追查与调优
2012-03-27 14:44 1149JDK的几种分析工具 http://liudaoru ... -
NodeJs相关资料
2011-08-18 14:55 3020NodeJs获取参数: proces ... -
jprofiler追踪问题
2011-08-12 18:20 1052Jprofiler下载页: http://www.ej ... -
Linux服务器性能评估与优化【z】
2011-07-01 10:05 1557来自:http://www.itlearner.com/ ... -
Java 理论与实践: 非阻塞算法简介【z】
2011-03-26 20:39 1288From: http://www.ibm.com/develo ... -
Java Crash问题分析[z]
2011-03-23 14:41 5978参考: http://www.ibm.com/develop ... -
Berkeley DB相关
2010-09-25 22:17 1061为什么要使用Berkeley DB,它适合什么场合应用?Ber ... -
熟悉系统方法总结
2010-07-06 14:26 824了解一个陌生的系统是我们经常碰到的事情,下面总结一下自己的一些 ... -
Java缓存框架 EhCache
2010-07-06 14:09 4734From: http://www.oschina.net/p/ ... -
【nio】使用 ServerSocketChannel 实现的 File 服务器[z]
2010-05-21 17:31 3978From: http://www.java2000.net/p ... -
Memcached命令行管理
2010-03-15 11:18 4495From: http://www.exp2up.com/2 ... -
(转)Resin服务器配置指南
2010-01-21 15:35 3471From:http://blog.21cn.com/super ... -
Flickr架构
2010-01-11 09:52 1273From: http://www.cyask.com/ques ... -
JDK的几种分析工具
2009-12-04 12:13 10910From: http://blog.csdn.net/hant ... -
XMemcached——一个新的开源Java memcached客户端
2009-10-23 09:27 1899From: http://www.infoq.com/cn/ ... -
多线程任务调度学习
2009-10-16 13:58 2308昨天找到一套多线程任务调度的代码,相当的不错,先把思路总结一下 ... -
用HSCALE实现MySQL的数据分布式存储
2009-10-15 12:47 3023From:http://www.ningoo.net/ht ... -
马化腾:搜索、电子商务硬仗一定要坚持打
2009-10-15 12:09 1724From:http://www.techweb.com.c ... -
MySQL分表实现上百万上千万记录分布存储的批量查询设计模式【z】
2009-10-15 09:56 3179From:http://hi.baidu.com/jabber ... -
nginx负载均衡和lvs负载均衡的比较分析【z】
2009-10-13 20:02 1478From:http://www.shouker.com/u ...
相关推荐
在这个“Jacob操作word文档的方法集”中,我们将探讨如何使用Jacob 1.5版本来创建和操作Word文档,特别是创建目录。 首先,为了使用Jacob,你需要在你的项目中添加Jacob的jar文件。这通常涉及到将库添加到项目的类...
在这个“java-poi教你如何生成office文档.7z”压缩包中,很可能包含了一系列的教程和示例代码,帮助开发者掌握如何使用Java POI库生成Office文档。 1. **Java POI基本概念** - **HSSF (Horrible Spreadsheet ...
总结起来,Java HTML 转 Word 和 Word 转 PDF 涉及到的技术包括HTML解析、Word文档处理、PDF生成,以及使用相关的Java库如Aspose.Words和Aspose.PDF。在实际开发中,需要熟悉这些库的API,并理解不同文档格式之间的...
标签“java world填充”可能表明这个工具是用Java编程语言开发的,并且具备填充Word文档的功能。Java作为一种跨平台的编程语言,适合开发这样的桌面应用,其丰富的库和强大的处理能力使得处理文本文件变得简单。 ...
为了将Word文档转换为PDF,我们可以结合使用Apache POI与一个PDF生成库,如iText或 Flying Saucer。在这个特定的实例中,我们可能使用的是Flying Saucer,因为它可以直接将HTML渲染为PDF,而Word文档可以被解析为...
【标题】"doxygen生成样例.7z"是一个压缩包文件,其中包含了使用doxygen工具生成的示例文档。这个文件旨在展示如何利用doxygen为C语言代码自动生成高质量的文档,包括HTML、RTF(Rich Text Format)和LaTeX格式。...
在这个例子中,我们可能会看到如何使用POI将后台数据动态插入到Word模板中,然后将生成的新Word文档转换为PDF格式。 首先,我们需要理解Apache POI的工作原理。POI库主要处理两种类型的文件:HSSF(Horizontally ...
### Java生成PPT的核心知识点解析 #### 一、概述 在现代办公环境中,演示文档(如PPT)的使用非常广泛。本篇文章将基于提供的Java代码片段,详细解析如何使用Java来手动生成PPT文档,并重点介绍代码中的关键类与...
- Java程序开发流程通常包括编写源代码(`.java`文件),编译源代码生成字节码(`.class`文件),最后通过Java虚拟机(JVM)解释运行字节码。 **2. 在 Java 的基本数据类型中,`char` 型采用 Unicode 编码方案,每个 ...
Java_lib.7z 是一个包含了一系列Java开发中常用的库文件的压缩包,主要针对J2EE平台和SSHE(Spring、Struts、Hibernate、Ejb)项目开发。这些jar包是Maven构建系统所必需的依赖,它们为开发者提供了丰富的功能和API...
总的来说,"aspose-words-16.4.0-jdk16-1.0.0.7z"这个压缩包包含的Aspose.Words for Java库,为Java开发者提供了一个强大的工具,能够方便地在没有安装Office的情况下处理Word文档,特别是将Word文档转换为PDF格式,...
4. **自动化任务**:对于需要批量处理Word文档的场景,如批量修改模板、生成报告等,Jacob可以实现自动化处理,显著提高工作效率。 5. **宏执行**:Jacob可以执行Word中的宏,这对于运行预先定义好的复杂操作序列...
### Java词频统计算法(使用单词树) #### 背景与问题 在文本处理领域,词频统计是一项常见的任务。例如,在自然语言处理、搜索引擎优化、文档分类等应用场景中,了解某个词语出现的频率至关重要。传统的词频统计...
2. **游戏状态变量**:在`TanChiShe`类中,定义了一系列变量来存储游戏状态,如蛇的长度`length`,坐标`x`和`y`,食物坐标`objectX`和`objectY`,蛇的移动方向`z`,以及游戏速度`time`。`Thread she`用于表示游戏主...
此外,OpenOffice API和Apache POI项目为Java开发者提供了处理Word文档的工具,它们允许开发者在不依赖于Microsoft Office的情况下读写Word文件。这些库不仅支持基本的文本操作,还涵盖了复杂的表格、图表和宏等功能...
总之,"fr.opensagres.poi.xwpf.converter"系列库是Apache POI生态中的重要组成部分,它们使得Java开发者能够方便地处理Word文档,并将其转换为PDF格式,这在需要跨平台、保证文档格式一致性的场景下尤其有用。...
2. **Word处理**:这个库允许开发人员创建新的Word文档,打开并编辑现有文件,以及将Word文档转换为其他格式,如PDF、HTML或文本。它提供了丰富的API,可以设置页面布局、字体样式、段落格式,以及添加图片、表格和...
标题中的"org.openxmlformats.schemas.wordprocessingml.x2006"是一个Java包名,它与Microsoft Office Open XML(OOXML)标准有关,特别是针对Word文档处理的XML模式定义。这个包通常包含用于解析和生成符合...
4. **xbean.jar**:可能是一个辅助库,与XMLBeans相关,用于处理XML Schema和Java类的生成。 5. **poi-ooxml-4.0.1.jar**:POI的OOXML支持部分,处理XLSX、DOCX等新格式。 6. **poi-scratchpad-4.0.1.jar**:包含...
2. **代码格式保留**:从Eclipse复制的代码粘贴到Word或WordPad中,代码格式(字体、缩进、颜色)得以保留,这对于文档编写很有帮助。 **外挂篇** Eclipse的一大特色是可以安装各种插件以扩展其功能。例如: 1. *...