• 在Java中如何操作word, excel, pdf文件


    java操作word,excel,pdf

     

    在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中。所以今天我们就简单来看一下java对word、excel、pdf文件的读取。本篇博客只是讲解简单应用。如果想深入了解原理。请读者自行研究一些相关源码。

    首先我们来认识一下读取相关文档的jar包:

    1. 引用POI包读取word文档内容

    poi.jar 下载地址

    http://apache.freelamp.com/poi/release/bin/poi-bin-3.6-20091214.zip http://apache.etoak.com/poi/release/bin/poi-bin-3.6-20091214.zip  http://labs.renren.com/apache-mirror/poi/release/bin/poi-bin-3.6-20091214.zip

    2.引用jxl包读取excel文档的内容

    Jxl.jar下载地址

    http://nchc.dl.sourceforge.net/project/jexcelapi/CSharpJExcel/CSharpJExcel.zip

    3.引用PDFBox读取pdf文档的内容

    Pdfbox.jar下载地址

    http://labs.renren.com/apache-mirror/pdfbox/1.1.0/pdfbox-1.1.0.jar http://apache.etoak.com/pdfbox/1.1.0/pdfbox-1.1.0.jar  http://apache.freelamp.com/pdfbox/1.1.0/pdfbox-1.1.0.jar

    Fontbox.jar下载地址

    http://apache.etoak.com/pdfbox/1.1.0/fontbox-1.1.0.jar  http://labs.renren.com/apache-mirror/pdfbox/1.1.0/fontbox-1.1.0.jar  http://apache.freelamp.com/pdfbox/1.1.0/fontbox-1.1.0.jar

    Jempbox.jar下载地址

    http://labs.renren.com/apache-mirror/pdfbox/1.1.0/jempbox-1.1.0.jar http://apache.etoak.com/pdfbox/1.1.0/jempbox-1.1.0.jar  http://apache.freelamp.com/pdfbox/1.1.0/jempbox-1.1.0.jar

    下面我们就来简单看一下这些jar包的对文档的读取的应用实例:

    1. 引用POI包读取word文档内容

    1. import java.io.File;     
    2. import java.io.FileInputStream;     
    3. import org.apache.poi.hwpf.HWPFDocument;     
    4. import org.apache.poi.hwpf.usermodel.Range;     
    5.   
    6. /**  
    7. *  
    8. * @author 曹胜欢 
    9. */   
    10. public class DocFile{     
    11.   
    12.   
    13.     @Override   
    14.     public String getContent(File f) throws Exception {     
    15.         FileInputStream fis = new FileInputStream(f);     
    16.         HWPFDocument doc = new HWPFDocument(fis);     
    17.         Range rang = doc.getRange();     
    18.         String text = rang.text();     
    19.         fis.close();     
    20.         return text;     
    21.     }     
    import java.io.File;   
    import java.io.FileInputStream;   
    import org.apache.poi.hwpf.HWPFDocument;   
    import org.apache.poi.hwpf.usermodel.Range;   
    
    /** 
    * 
    * @author 曹胜欢
    */ 
    public class DocFile{   
    
    
        @Override 
        public String getContent(File f) throws Exception {   
            FileInputStream fis = new FileInputStream(f);   
            HWPFDocument doc = new HWPFDocument(fis);   
            Range rang = doc.getRange();   
            String text = rang.text();   
            fis.close();   
            return text;   
        }   

    2.引用jxl包读取excel文档的内容

    1. import java.io.File;     
    2. import java.io.FileInputStream;     
    3. import jxl.Cell;     
    4. import jxl.Sheet;     
    5. import jxl.Workbook;     
    6.   
    7. /**  
    8. *  
    9. * @author 曹胜欢 
    10. */   
    11. public class XlsFile{     
    12.   
    13.     @Override     
    14.     public String getContent(File f) throws Exception {     
    15.      //构建Workbook对象, 只读Workbook对象  
    16.      //直接从本地文件创建Workbook  
    17.       //从输入流创建Workbook  
    18.   
    19.         FileInputStream fis = new FileInputStream(f);     
    20.         StringBuilder sb = new StringBuilder();     
    21.         jxl.Workbook rwb = Workbook.getWorkbook(fis);     
    22. //一旦创建了Workbook,我们就可以通过它来访问  
    23. //Excel Sheet的数组集合(术语:工作表),  
    24. //也可以调用getsheet方法获取指定的工资表  
    25.         Sheet[] sheet = rwb.getSheets();     
    26.         for (int i = 0; i < sheet.length; i++) {     
    27.             Sheet rs = rwb.getSheet(i);     
    28.             for (int j = 0; j < rs.getRows(); j++) {     
    29.                Cell[] cells = rs.getRow(j);     
    30.                for(int k=0;k<cells.length;k++)     
    31.                sb.append(cells[k].getContents());     
    32.             }     
    33.         }     
    34.         fis.close();     
    35.         return sb.toString();     
    36.     }     
    37.   
    38. }  
    import java.io.File;   
    import java.io.FileInputStream;   
    import jxl.Cell;   
    import jxl.Sheet;   
    import jxl.Workbook;   
    
    /** 
    * 
    * @author 曹胜欢
    */ 
    public class XlsFile{   
    
        @Override   
        public String getContent(File f) throws Exception {   
         //构建Workbook对象, 只读Workbook对象
         //直接从本地文件创建Workbook
          //从输入流创建Workbook
    
            FileInputStream fis = new FileInputStream(f);   
            StringBuilder sb = new StringBuilder();   
            jxl.Workbook rwb = Workbook.getWorkbook(fis);   
    //一旦创建了Workbook,我们就可以通过它来访问
    //Excel Sheet的数组集合(术语:工作表),
    //也可以调用getsheet方法获取指定的工资表
            Sheet[] sheet = rwb.getSheets();   
            for (int i = 0; i < sheet.length; i++) {   
                Sheet rs = rwb.getSheet(i);   
                for (int j = 0; j < rs.getRows(); j++) {   
                   Cell[] cells = rs.getRow(j);   
                   for(int k=0;k<cells.length;k++)   
                   sb.append(cells[k].getContents());   
                }   
            }   
            fis.close();   
            return sb.toString();   
        }   
    
    }

    由上面代码我们可知:一旦得到了Sheet,我们就可以通过它来访问Excel Cell(术语:单元格)。参考下面的代码片段: //获取第一行,第一列的值 Cell c00 = rs.getCell(0, 0); String strc00 = c00.getContents(); //获取第一行,第二列的值 Cell c10 = rs.getCell(1, 0); String strc10 = c10.getContents(); 当你完成对Excel电子表格数据的处理后,一定要使用close()方法来关闭先前创建的对象,以释放读取数据表的过程中所占用的内存空间,在读取大量数据时显得尤为重要。

    3.引用PDFBox读取pdf文档的内容

    1. import java.io.File;     
    2. import java.io.FileInputStream;     
    3. import org.pdfbox.pdfparser.PDFParser;     
    4. import org.pdfbox.pdmodel.PDDocument;     
    5. import org.pdfbox.util.PDFTextStripper;     
    6.   
    7. /**  
    8. *  
    9. * @author 曹胜欢 
    10. */   
    11. <pre class="java" name="code">public class PdfFile{     
    12.   
    13.     public String getContent(File f) throws Exception {     
    14.         FileInputStream fis = new FileInputStream(f);     
    15.         PDFParser p = new PDFParser(fis);     
    16.         p.parse();     
    17.         PDDocument pdd = p.getPDDocument();     
    18.         PDFTextStripper ts = new PDFTextStripper();     
    19.         String c = ts.getText(pdd);     
    20.         pdd.close();     
    21.         fis.close();     
    22.         return c;     
    23.     }     
    24. }</pre><br>

    ===========仅供分享=========

  • 相关阅读:
    Compiling LIBFFM On OSX 10.9
    Linux shell 脚本入门教程+实例
    Understanding the Bias-Variance Tradeoff
    Learning How To Code Neural Networks
    MXNet设计和实现简介
    数据需求统计常用awk命令
    Deal with relational data using libFM with blocks
    MATLAB 在同一个m文件中写多个独立的功能函数
    Debug 路漫漫-06
    MATLAB 求两个矩阵的 欧氏距离
  • 原文地址:https://www.cnblogs.com/xm1-ybtk/p/4966517.html
Copyright © 2020-2023  润新知