java怎么操作word文件(bbs上copy,未整理)

楼主northwest_wind(西北风) 2005-07-26 10:19:54 在 Java / Web 开发 提问

首先有一个word文件模板,比如一个个人简历模板,我想从数据库里面提取个人信息,把个人信息加到简历模板文件里面,然后存到服务器端,这样怎么实现?? 问题点数:100、回复次数:13Top

src="/Include/Board.htm?Tags=文件,模板,word,中文,抽取,pdfbox,matrix,jacob,pdfdocument,pdfparser" frameborder="0" scrolling="no">

1 楼hm8328()回复于 2005-07-26 10:43:35 得分 0

这个目前没有接促到,不过帮你UP一下!  
  ^_^Top

2 楼cyc00000000()回复于 2005-07-26 10:45:59 得分 0

学习  
  Top

3 楼free_card(痛并快乐着)回复于 2005-07-26 11:56:31 得分 0

java抽取word,pdf的四种武器    
   
  转:http://www.matrix.org.cn  
  很多人问到如何抽取word,excel,pdf阿。这里我总结一下抽取word,pdf的  
  几种方法。  
  1。用jacob.  
  其实jacob是一个bridage,连接java和com或者win32函数的一个中间件,jacob并不能直接抽取word,excel等文件,需要自己写dll哦,不过已经有为你写好的了,就是jacob的作者一并提供了。  
  jacob下载:http://www.matrix.org.cn/down_view.asp?id=13  
  下载了jacob并放到指定的路径之后(dll放到path,jar文件放到classpath),就可以写你自己的抽取程序了,下面是一个例子:  
  import   java.io.File;  
  import   com.jacob.com.*;  
  import   com.jacob.activeX.*;  
   
  public   class   FileExtracter{  
   
  public   static   void   main(String[]   args)   {  
   
  ActiveXComponent   app   =   new   ActiveXComponent("Word.Application");  
  String   inFile   =   "c:/test.doc";  
  String   tpFile   =   "c:/temp.htm";  
  String   otFile   =   "c:/temp.xml";  
  boolean   flag   =   false;  
  try   {  
  app.setProperty("Visible",   new   Variant(false));  
  Object   docs   =   app.getProperty("document.").toDispatch();  
  Object   doc   =   Dispatch.invoke(docs,"Open",   Dispatch.Method,   new   Object[],   new   int[1]).toDispatch();  
  Dispatch.invoke(doc,"SaveAs",   Dispatch.Method,   new   Object[],   new   int[1]);  
  Variant   f   =   new   Variant(false);  
  Dispatch.call(doc,   "Close",   f);  
  flag   =   true;  
  }   catch   (Exception   e)   {  
  e.printStackTrace();  
  }   finally   {  
  app.invoke("Quit",   new   Variant[]   {});  
  }  
   
  }  
  }  
  2。用apache的poi来抽取word,excel。  
  poi是apache的一个项目,不过就算用poi你可能都觉得很烦,不过不要紧,这里提供了更加简单的一个接口给你:  
  下载经过封装后的poi包:http://www.matrix.org.cn/down_view.asp?id=14  
  下载之后,放到你的classpath就可以了,下面是如何使用它的一个例子:  
  import   java.io.*;  
  import   org.textmining.text.extraction.WordExtractor;  
  /**  
  *   <p>Title:   pdf   extraction</p>  
  *   <p>Description:   email:chris@matrix.org.cn</p>  
  *   <p>Copyright:   Matrix   Copyright   (c)   2003</p>  
  *   <p>Company:   Matrix.org.cn</p>  
  *   @author   chris  
  *   @version   1.0,who   use   this   example   pls   remain   the   declare  
  */  
   
  public   class   PdfExtractor   {  
  public   PdfExtractor()   {  
  }  
  public   static   void   main(String   args[])   throws   Exception  
  {  
  FileInputStream   in   =   new   FileInputStream   ("c:/a.doc");  
  WordExtractor   extractor   =   new   WordExtractor();  
  String   str   =   extractor.extractText(in);  
  System.out.println("the   result   length   is"+str.length());  
  System.out.println("the   result   is"+str);  
  }  
  }  
   
  3。pdfbox-用来抽取pdf文件  
  但是pdfbox对中文支持还不好,先下载pdfbox:http://www.matrix.org.cn/down_view.asp?id=12  
  下面是一个如何使用pdfbox抽取pdf文件的例子:  
  import   org.pdfbox.pdmodel.PDdocument.  
  import   org.pdfbox.pdfparser.PDFParser;  
  import   java.io.*;  
  import   org.pdfbox.util.PDFTextStripper;  
  import   java.util.Date;  
  /**  
  *   <p>Title:   pdf   extraction</p>  
  *   <p>Description:   email:chris@matrix.org.cn</p>  
  *   <p>Copyright:   Matrix   Copyright   (c)   2003</p>  
  *   <p>Company:   Matrix.org.cn</p>  
  *   @author   chris  
  *   @version   1.0,who   use   this   example   pls   remain   the   declare  
  */  
   
  public   class   PdfExtracter{  
   
  public   PdfExtracter(){  
  }  
  public   String   GetTextFromPdf(String   filename)   throws   Exception  
  {  
  String   temp=null;  
  PDdocument.nbsp;pdfdocument.null;  
  FileInputStream   is=new   FileInputStream(filename);  
  PDFParser   parser   =   new   PDFParser(   is   );  
  parser.parse();  
  pdfdocument.nbsp;=   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);  
  System.out.println("the   string   length   is"+contents.length+"/n");  
  return   ts;  
  }  
  public   static   void   main(String   args[])  
  {  
  PdfExtracter   pf=new   PdfExtracter();  
  PDdocument.nbsp;pdfdocument.nbsp;=   null;  
   
  try{  
  String   ts=pf.GetTextFromPdf("c:/a.pdf");  
  System.out.println(ts);  
  }  
  catch(Exception   e)  
  {  
  e.printStackTrace();  
  }  
  }  
   
  }  
   
  4.抽取支持中文的pdf文件-xpdf  
  xpdf是一个开源项目,我们可以调用他的本地方法来实现抽取中文pdf文件。  
  下载xpdf函数包:http://www.matrix.org.cn/down_view.asp?id=15  
  同时需要下载支持中文的补丁包:http://www.matrix.org.cn/down_view.asp?id=16  
  按照readme放好中文的patch,就可以开始写调用本地方法的java程序了  
  下面是一个如何调用的例子:  
  import   java.io.*;  
  /**  
  *   <p>Title:   pdf   extraction</p>  
  *   <p>Description:   email:chris@matrix.org.cn</p>  
  *   <p>Copyright:   Matrix   Copyright   (c)   2003</p>  
  *   <p>Company:   Matrix.org.cn</p>  
  *   @author   chris  
  *   @version   1.0,who   use   this   example   pls   remain   the   declare  
  */  
   
   
  public   class   PdfWin   {  
  public   PdfWin()   {  
  }  
  public   static   void   main(String   args[])   throws   Exception  
  {  
  String   PATH_TO_XPDF="C:/Program   Files/xpdf/pdftotext.exe";  
  String   filename="c:/a.pdf";  
  String[]   cmd   =   new   String[]   ;  
  Process   p   =   Runtime.getRuntime().exec(cmd);  
  BufferedInputStream   bis   =   new   BufferedInputStream(p.getInputStream());  
  InputStreamReader   reader   =   new   InputStreamReader(bis,   "UTF-8");  
  StringWriter   out   =   new   StringWriter();  
  char   []   buf   =   new   char[10000];  
  int   len;  
  while((len   =   reader.read(buf))>=   0)   {  
  //out.write(buf,   0,   len);  
  System.out.println("the   length   is"+len);  
  }  
  reader.close();  
  String   ts=new   String(buf);  
  System.out.println("the   str   is"+ts);  
  }  
  }  
   
       
     
  Top

4 楼asa516(阿萨)回复于 2005-07-26 12:16:44 得分 0

你有word控件吗?要是没有的话需要在默版中插入标签页,再从标签页中取值。Top

5 楼108041217(josso)回复于 2005-07-26 12:25:17 得分 0

用poi或者itextTop

6 楼Little_qd(沉淀思想)回复于 2005-07-26 15:02:32 得分 0

网上有很多比较成熟的word控件,可以用来制作模板  
  将模板中相应字段用特殊字符替代,比如§name§、§age§  
  用js将特殊字符替换成想要的值,然后保存Top

7 楼ccm1980(海浪)回复于 2005-07-26 15:24:43 得分 0

package   org.redtroy.JExecl;  
  import   java.io.*;  
  import   jxl.*;  
  /**  
    *   @author   redtroy  
    *  
    *   TODO   To   change   the   template   for   this   generated   type   comment   go   to  
    *   Window   -   Preferences   -   Java   -   Code   Style   -   Code   Templates  
    */  
  public   class   ExcelReader   {  
          private   Workbook   wb;  
          private   Sheet   []   sheet;  
           
          protected   void   getExcelFile(String   filepath)   throws   Exception   {  
                  InputStream   in=new   FileInputStream(filepath);  
                  wb=Workbook.getWorkbook(in);  
                  //or  
                  //File   file=new   File(filepath);  
                  //wb=Workbook.getWorkbook(file);  
          }  
          protected   Sheet   []   getSheet(){  
                  int   number=wb.getNumberOfSheets();  
                  sheet=wb.getSheets();  
                  return   sheet;  
          }  
          protected   void   read(){  
                   
                  for(int   i=0;i<sheet.length;i++){  
                          Sheet   sh=sheet[i];  
                          int   rows=sh.getRows();  
                          int   column=sh.getColumns();  
                          System.out.println("Reading   Sheet["+i+"]   from   the   Workbook........");  
                          System.out.println("Content   of   Sheet["+i+"]");  
                          for(int   x=0;x<rows;x++){  
                                  for(int   y=0;y<column;y++){  
                                          Cell   cell=sh.getCell(y,x);  
                                          if(cell.getType()==CellType.LABEL){  
                                                  System.out.print(((LabelCell)cell).getString()+"[LabelCell]         ");  
                                          }else   if(cell.getType()==CellType.DATE){  
                                                  System.out.print(((DateCell)cell).getDate()+"[DateCell]         ");  
                                          }else   if(cell.getType()==CellType.NUMBER){  
                                                  System.out.print(((NumberCell)cell).getValue()+"[NumberCell]         ");  
                                          }else   if(cell.getType()==CellType.BOOLEAN){  
                                                  System.out.print(((BooleanCell)cell).getValue()+"[BooleanCell]         ");  
                                          }  
                                          //System.out.print(cell.getContents()+"             ");  
                                  }  
                                  System.out.println();  
                          }  
                          wb.close();  
                           
                  }  
          }  
          public   static   void   main(String[]   args)   {  
                  ExcelReader   reader=new   ExcelReader();  
                  try{  
                  reader.getExcelFile("/home/redtroy/test.xls");  
                  Sheet   []   sheet=reader.getSheet();  
                  reader.read();  
                  }catch(Exception   e){  
                          e.printStackTrace();  
                  }  
                   
          }  
  }  
  Top

8 楼haodong2006(今夜无人入眠)回复于 2005-07-26 16:19:41 得分 0

学习Top

9 楼simon0512(虫虫)回复于 2005-07-27 08:52:09 得分 0

学习  
  Top

10 楼joneyonly()回复于 2005-07-27 09:17:12 得分 0

学习下~Top

11 楼nccxl(小猪的狗熊)回复于 2005-07-27 10:02:56 得分 0

乘机打个广告,呵呵。  
  如果需要专业的WEB应用的WOED/EXCEL中间件可以和我联系。  
  QQ:491285290Top

12 楼nccxl(小猪的狗熊)回复于 2005-07-27 10:04:19 得分 0

也可以去  
  http://www.goldgrid.com/Download/index.asp  
  下一个iWebOffice2003网络文档控件试用一下,免费的。Top

13 楼congliu(取次花丛都不顾,半缘修道半缘君。)回复于 2005-09-01 11:05:36 得分 0

java操作word详解  
   
  http://www.chinajavalab.com/cgi-bin/topic.cgi?forum=1&topic=46 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值