java解析word文档用什么技术
java读取word文档时,虽然网上介绍了很多插件poi、java2Word、jacob、itext等等,poi无法读取格式(新的API估计行好像还在处于研发阶段,不太稳定,做项目不太敢用);java2Word、jacob容易报错找不到注册,比较诡异,我曾经在不同的机器上试过,操作方法完全一致,有的机器不报错,有的报错,去他们论坛找高人解决也说不出原因,项目部署用它有点玄;itxt好像写很方便但是我查了好久资料没有见到过关于读的好办法。
经过一番选择还是折中点采用rtf最好,毕竟rtf是开源格式,不需要借助任何插件,只需基本IO操作外加编码转换即可。
rtf格式文件表面看来和doc没啥区别,都可以用word打开,各种格式都可以设定。
java 解析word格式的文档有什么好的办法吗
在web-oa系统中,公文管理好象不可或缺,有时需要从数据库中查询一些数据以某种格式输出来,并以word文档的形式展现,有时许多word文档保存到数据库中的某个表的Blob字段里,服务器再把保存在Blob字段中的图片文件展现给用户。
通过网上查找发现很少有关于此类的文章,现在整理起来供大家参考。
1在client端直接生成word文档 在jsp页面上生成word文档非常简单,只需把contentType=”text/html”改为contentType="application/msword; charset=utf-8"即可,代码如下: 通过设置可以使原来页面的内容在word中表现出来。
如果需要把word文档下载下来,只需在jsp页面上面加上如下代码: 其中filename.doc中filename是要下载的word文档的文件名,可以通过来自行定制,如下 .doc"); %> 这样提供一个提示信息供用户选择如下图所示 小技巧:如果程序员需要在生成word文档的时候按照自己预先在word上设计好的格式,可以复制word格式然后粘贴到frontpage中,取html代码贴到jsp页面即可。
2 在客户端输出存在数据库中的word实体 这里只讨论在client输出oracle中BLOB字段中的word文档实体。
其中调用了类getBlobBean,该类提供了从oracle中取出blob功能,代码如下: package yourpackage; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; import oracle.sql.*; import beans.yourbeanpackage. getBlobBean; /** * Title: * Description: * Copyright: Copyright (c) 2004 * Company: * @author not attributable * @version 1.0 */ public class GetBlobServlet1 extends HttpServlet { //设置输出内容类型,这个设置很重要,否则客户端浏览器不能识别输出内容,导致弹出下载的对话框。
private static final String CONTENT_TYPE = "application/msword;charset=utf-8"; //Initialize global variables public void init() throws ServletException { } //Process the HTTP Get request public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(CONTENT_TYPE); perform(request,response); } public void perform(HttpServletRequest request, HttpServletResponse response){ try{ //该类功能是从oracle哭中取出blob实体 getBlobBean getBlob=new getBlobBean(); OutputStream sos = response.getOutputStream(); getBlob.connFunction(); oracle.sql.BLOB blob=getBlob.getBlob("cehui"); //输出word文档 if(blob!=null){ InputStream pi = blob.getBinaryStream(); int blobsize =(int)blob.length(); byte[] blobbytes = new byte[blobsize]; int bytesRead = 0; while ((bytesRead = pi.read(blobbytes)) != -1) { sos.write(blobbytes, 0, bytesRead); } pi.close(); sos.flush(); sos.close(); } getBlob.dropConnFunction(); }catch(Exception e){ System.out.println(e.toString()); } } //Clean up resources public void destroy() { } } 3在client端直接生成EXCEL文档 生成 生成例子excel 。
用WORD排版面,倒出HTML 把代码拷贝到网页里,然后这个JSP页面打印你就随心所欲的控制了。
4在client端直接生成PDF文档 需要下载JAR包:以下代码在JDK1.4 RESIN2.16 下测试通过 ITEXT包 http://mesh.dl.sourceforge.net/sourceforge/itext/itext-1.3.5.jar 字体包 http://itext.sourceforge.net/downloads/iTextAsian.jar JSP生成到客户IE端直接打开 ie_PDF.jsp ------------------------------- 在服务器端生成不下载。
server_PDF.jsp 使用iText可以设置文字的字体,对于我们中国的程序员来说如何显示中文是最紧要的问题。
幸好iText中有一个专门的包用来设置亚洲国家的字体你可以从 http://itext.sourceforge.net/downloads/iTextAsian.jar 下载这个包。
然后把它直接放到你的ClassPath中就可以了。
如何设置字体呢? BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); Font FontChinese = new Font(bfChinese, 12, Font.NORMAL); 在上面的代码中设置了中文字体的显示,你只要使用下面的代码就可以包中文加到PDF中了 String title = "我爱喝咖啡"; Paragraph t = new Paragraph(title, FontChinese); doc.add(t); 原文链接地址: http://www.360doc.com/content/07/0824/18/25392_692506.shtml
在java程序中,将一个二进制的word文件读了出来并生成word文件。
但...
java项目中文件的路径-方法大全 一、 相对路径的获得 说明:相对路径(即不写明时候到底相对谁)均可通过以下方式获得(不论是一般的java项目还是web项目) System.getProperty("user.dir"); 上述相对路径中,java项目中的文件是相对于项目的根目录web项目中的文件路径视不同的web服务器不同而不同(tomcat是相对于tomcat安装目录\bin) 二 类加载目录的获得(即当运行时某一类时获得其装载目录)1.1)通用的方法一(不论是一般的java项目还是web项目,先定位到能看到包路径的第一级目录) InputStreamis=TestAction.class.getClassLoader().getResourceAsStream("test.txt"); (test.txt文件的路径为 项目名\src\test.txt;类TestPath所在包的第一级目录位于src目录下) 上式中将TestPath,test.txt替换成对应成相应的类名和文件名字即可1.2)通用方法二 (此方法和1.1中的方法类似,不同的是此方法必须以'/'开头) InputStream is=Test1.class.getResourceAsStream("/test.txt"); (test.txt文件的路径为 项目名\src\test.txt,类Test1所在包的第一级目录位于src目录下) 三 web项目根目录的获得(发布之后)1 从servlet出发 可建立一个servlet在其的init方法中写入如下语句(没有请求的话会抛空指针导常) ServletContext s1=this.getServletContext(); String temp=s1.getRealPath("/"); (关键) 结果形如:F:\tomcat-6.0.36\webapps\test\(test为项目名字) 如果是调用了s1.getRealPath("")则输出F:\tomcat-6.0.36\webapps\test(少了一个"\")2 从httpServletRequest出发(没有请求的话会抛空指针导常) String path=request.getSession().getServletContext().getRealPath("/"); 结果形如: F:\tomcat-6.0.36\webapps\test\ 四 classpath的获取(在Eclipse中为获得src或者classes目录的路径),放在监听器,可以窗口启动获取路径 方法一 Thread.currentThread().getContextClassLoader().getResource("").getPath() String path = Thread.currentThread().getContextClassLoader() .getResource("").getPath(); System.out.println("path========" + path);输出: path========/F:/tomcat-6.0.36/webapps/test/WEB-INF/classes/ 方法二 JdomParse.class.getClassLoader().getResource("").getPath() (JdomParse为src某一个包中的类,下同) eg:String p1=JdomParse.class.getClassLoader().getResource("").getPath(); System.out.println("JdomParse.class.getClassLoader().getResource--"+p1); 输出:JdomParse.class.getClassLoader().getResource-/F:/tomcat-6.0.36/webapps/test/WEB-INF/classes/ 另外,如果想把文件放在某一包中,则可以 通过以下方式获得到文件(先定位到该包的最后一级目录) eg String p2=JdomParse.class.getResource("").getPath(); System.out.println("JdomParse.class.getResource---"+p2); 输出:JdomParse.class.getResource--/F:/tomcat-6.0.36/webapps/test/WEB-INF/classes/ (JdomParse为src目录下jdom包中的类) 四 属性文件的读取:方法 一 InputStream in = lnewBufferedInputStream( new FileInputStream(name)); Properties p = new Properties(); p.load(in); 注意路径的问题,做执行之后就可以调用p.getProperty("name")得到对应属性的值 方法二 Locale locale =Locale.getDefault(); ResourceBundle localResource = ResourceBundle.getBundle("test/propertiesTest",locale); String value = localResource.getString("test"); System.out.println("ResourceBundle: " + value); 工程src目录下propertiesTest.properties(名字后缀必须为properties)文件内容如下:test=hello word 不通过Servlet获取路径 第一种实现 Java代码 URL url = ClassLoader.getSystemClassLoader().getResource("./"); File file =new File(url.getPath()); File parentFile =new File(file.getParent()); System.out.println("webRoot:"+parentFile.getParent()); 第二种实现 首先写一个接听类 (推荐使用,容器启动时就执行,不会抛空指针异常,适合做定时器任务来删除服务器文件的路径) Java代码:package com.chinacreator.report.listener; import javax.servlet.ServletContext; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; /** * @authorxiaoqun.yi */ public class PathListener implementsServletContextListener { private staticServletContext servletContext; public voidcontextDestroyed(ServletContextEvent sce) { this.servletContext= sce.getServletContext(); System.out.println("path=======:"+servletContext.getRealPath("/")); } public voidcontextInitialized(ServletContextEvent arg0) { } } 在web.xml中加入如下配置 Java代码 : com.chinacreator.report.listener.PathListener 五、Java中的getResourceAsStream有以下几种: 1. Class.getResourceAsStream(String path) : path 不以'/'开头时默认是从此类所在的包下取资源,以'/'开头则是从ClassPath根下获取。
其只是通过path构造一个绝对路径,最终还是由 ClassLoader(类加载器)(获取资源)2. Class....
安卓开发 如何读取word文档显示出来....
展开全部 Apache POI 可以满足你的需求,我觉估计也是唯一靠谱的选择了。
是一个开源的解析Office文件的Java库。
我以前用它来给单位的内容管理客户端做过Word文档展示。
总的来说,POI库就是把各种Office文件解析成一种文档树。
当时我是修改了一下POI的一个例子程序把word转成html文件来显示的。
有很多支持的包,我用的是poi包,注意版本,要和excel版本相符。
然后网上有例子,直接可以拿到数据,怎么显示出来就简单了。
...
spring mvc word文件上传之后可预览的实现方法或者步骤
你好!springmvc文件上传1.加入jar包:commons-fileupload-1.2.2.jar commons-io-2.0.1.jar lperson.java中加属性,实现get ,set方法 private String photoPath;2.创建WebRoot/upload目录,存放上传的文件1 2 method="post" 3 modelAttribute="person" 4 enctype="multipart/form-data">5 6 7 name: 8 age: 9 photo: 上面第9行文件上传框,不能和实体对象属性同名,类型不同 controller配置1 12、文件上传功能实现 配置文件上传解析器2 @RequestMapping(value={"/saveOrUpdate"},method=RequestMethod.POST)3 public String saveOrUpdate(Person p,4 @RequestParam("photo") MultipartFile file,5 HttpServletRequest request6 ) throws IOException{7 if(!file.isEmpty()){8 ServletContext sc = request.getSession().getServletContext();9 String dir = sc.getRealPath(“/upload”); //设定文件保存的目录10 11 String filename = file.getOriginalFilename(); //得到上传时的文件名12 FileUtils.writeByteArrayToFile(new File(dir,filename), file.getBytes());13 14 p.setPhotoPath(“/upload/”+filename); //设置图片所在路径15 16 System.out.println("upload over. "+ filename);17 } 18 ps.saveOrUpdate(p); 19 return "redirect:/person/list.action"; //重定向20 }3.文件上传功能实现 spring-mvc.xml 配置文件上传解析器1 2 3 class="org.springframework.web.multipart.commons.CommonsMultipartResolver">4 5 6 7 maxUploadSize以字节为单位:10485760 =10M id名称必须这样写1 映射资源目录2 随即文件名常用的三种方式:文件上传功能(增强:防止文件重名覆盖) fileName = UUID.randomUUID().toString() + extName; fileName = System.nanoTime() + extName; fileName = System.currentTimeMillis() + extName;1 if(!file.isEmpty()){2 ServletContext sc = request.getSession().getServletContext();3 String dir = sc.getRealPath("/upload");4 String filename = file.getOriginalFilename();5 6 7 long _lTime = System.nanoTime();8 String _ext = filename.substring(filename.lastIndexOf("."));9 filename = _lTime + _ext;10 11 FileUtils.writeByteArrayToFile(new File(dir,filename), file.getBytes());12 13 p.setPhotoPath("/upload/"+filename);14 15 System.out.println("upload over. "+ filename);16 } 图片显示 personList.jsp1 ${p.photoPath}
大神们!如何用java将上传的文件转换成为pdf?
展开全部 我曾经也尝试使用纯java技术去解析word文档,并且使用了apache的jacob,POI等项目,但是由于Microsoft Word使用的doc不是标准DOC文件,而是自己加处理过的,所以现在解析微软的doc都只能靠破解与猜解,据我所知,现在的技术只能从word中提取出来文字,所以使用纯java不太可能实现。
如果使用windows平台的话,可以选择使用微软的一些word控件来达到目的....
poi可以按paragraph分割word吗
自己在做项目过程中用到了解析分割word2003和2007,2010等文件内容,以下是代码:下面是部分代码,如果想要全部代码可以发我邮箱,yongqian.liu@peraglobal.com,接口类 :PoiExtractContent.javapackage com.peraglobal.extract.poi;import java.util.Map;/*** 使用 POI 解析 WORD 文件的内容信息* @author yongqian.liu* 2015-2-9*/public interface PoiExtractContent{/*** 根据文件路径获得 Document 对象* @param docPath 路径* @return Document*/public T getDocument(String docPath);/*** 解析 word 文档的标题* @param doc Document 对象* @return word 文档中标题*/public String getTilte(T doc);/*** 获取 word 文档里所有文字内容(不包括图片、表格等格式的内容)* @param doc Document 对象* @return word 文档中文字部分全部内容*/public String getContent(T doc);/*** 获取 word 文档里所有文字内容(不包括图片、表格等格式的内容)* @param docPath doc 对象路径* @return word 文档中文字部分全部内容*/public String getContent(String docPath);/*** 获取 word 文档里面所有图片并另存到指定目录下* @param doc Document 对象* @param picPath 保存图片路径* @param suffix 后缀名*/public void getPictures(T doc, String picPath, String suffix);/*** 获取word 文档里面所有表格* @param doc Document 对象*/public void getTables(T doc);/*** 获取word 文档中最大的字体* @param doc Document 对象* @return 最大字体*/public int getMaxFontSize(T doc);/*** 获取 word 文档的创建信息* @param docPath doc路径* @return 创建文档的信息*/public MapgetInfo(String docPath);}
转载请注明出处51数据库 » java 如何解析blob word文档
追逐00