`
gaozzsoft
  • 浏览: 415972 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

java读取excel数据 需要poi组件

阅读更多
Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对Microsoft Office格式档案读和写的功能。

  结构:

  HSSF - 提供读写Microsoft Excel格式档案的功能。

  XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。

  HWPF - 提供读写Microsoft Word格式档案的功能。

  HSLF - 提供读写Microsoft PowerPoint格式档案的功能。

  HDGF - 提供读写Microsoft Visio格式档案的功能。



以下是实例程序:

Java代码
1.package excelread;  
2. 
3.import java.io.FileInputStream;     
4.import java.io.FileNotFoundException;     
5.import java.io.IOException;     
6.import java.io.InputStream;     
7.import java.util.Date;     
8.import java.util.HashMap;     
9.import java.util.Map;     
10.    
11.import org.apache.poi.hssf.usermodel.HSSFCell;     
12.import org.apache.poi.hssf.usermodel.HSSFRow;     
13.import org.apache.poi.hssf.usermodel.HSSFSheet;     
14.import org.apache.poi.hssf.usermodel.HSSFWorkbook;     
15.import org.apache.poi.poifs.filesystem.POIFSFileSystem;     
16.    
17./**   
18. * 操作Excel表格的功能类   
19. * @author:hnylj   
20. * @version 1.0   
21. */    
22.public class ExcelReader {     
23.    private POIFSFileSystem fs;     
24.    private HSSFWorkbook wb;     
25.    private HSSFSheet sheet;     
26.    private HSSFRow row;     
27.    /**   
28.     * 读取Excel表格表头的内容   
29.     * @param InputStream   
30.     * @return String 表头内容的数组   
31.     *    
32.     */    
33.    public String[] readExcelTitle(InputStream is) {     
34.        try {     
35.            fs = new POIFSFileSystem(is);     
36.            wb = new HSSFWorkbook(fs);     
37.        } catch (IOException e) {     
38.            e.printStackTrace();     
39.        }     
40.        sheet = wb.getSheetAt(0);     
41.        row = sheet.getRow(0);     
42.        //标题总列数     
43.        int colNum = row.getPhysicalNumberOfCells();     
44.        String[] title = new String[colNum];     
45.        for (int i=0; i<colNum; i++) {     
46.            title[i] = getStringCellValue(row.getCell((short) i));     
47.        }     
48.        return title;     
49.    }     
50.         
51.    /**   
52.     * 读取Excel数据内容   
53.     * @param InputStream   
54.     * @return Map 包含单元格数据内容的Map对象   
55.     */    
56.    public Map<Integer,String> readExcelContent(InputStream is) {     
57.        Map<Integer,String> content = new HashMap<Integer,String>();     
58.        String str = "";     
59.        try {     
60.            fs = new POIFSFileSystem(is);     
61.            wb = new HSSFWorkbook(fs);     
62.        } catch (IOException e) {     
63.            e.printStackTrace();     
64.        }     
65.        sheet = wb.getSheetAt(0);     
66.        //得到总行数     
67.        int rowNum = sheet.getLastRowNum();     
68.        row = sheet.getRow(0);     
69.        int colNum = row.getPhysicalNumberOfCells();     
70.        //正文内容应该从第二行开始,第一行为表头的标题     
71.        for (int i = 1; i <= rowNum; i++) {     
72.            row = sheet.getRow(i);     
73.            int j = 0;     
74.            while (j<colNum) {     
75.        //每个单元格的数据内容用"-"分割开,以后需要时用String类的replace()方法还原数据     
76.        //也可以将每个单元格的数据设置到一个javabean的属性中,此时需要新建一个javabean     
77.                str += getStringCellValue(row.getCell((short) j)).trim() + "-";     
78.                j ++;     
79.            }     
80.            content.put(i, str);     
81.            str = "";     
82.        }     
83.        return content;     
84.    }     
85.         
86.    /**   
87.     * 获取单元格数据内容为字符串类型的数据   
88.     * @param cell Excel单元格   
89.     * @return String 单元格数据内容   
90.     */    
91.    private String getStringCellValue(HSSFCell cell) {     
92.        String strCell = "";     
93.        switch (cell.getCellType()) {     
94.        case HSSFCell.CELL_TYPE_STRING:     
95.            strCell = cell.getStringCellValue();     
96.            break;     
97.        case HSSFCell.CELL_TYPE_NUMERIC:     
98.            strCell = String.valueOf(cell.getNumericCellValue());     
99.            break;     
100.        case HSSFCell.CELL_TYPE_BOOLEAN:     
101.            strCell = String.valueOf(cell.getBooleanCellValue());     
102.            break;     
103.        case HSSFCell.CELL_TYPE_BLANK:     
104.            strCell = "";     
105.            break;     
106.        default:     
107.            strCell = "";     
108.            break;     
109.        }     
110.        if (strCell.equals("") || strCell == null) {     
111.            return "";     
112.        }     
113.        if (cell == null) {     
114.            return "";     
115.        }     
116.        return strCell;     
117.    }     
118.         
119.    /**   
120.     * 获取单元格数据内容为日期类型的数据   
121.     * @param cell Excel单元格   
122.     * @return String 单元格数据内容   
123.     */    
124.    private String getDateCellValue(HSSFCell cell) {     
125.        String result = "";     
126.        try {     
127.            int cellType = cell.getCellType();     
128.            if (cellType == HSSFCell.CELL_TYPE_NUMERIC) {     
129.                Date date = cell.getDateCellValue();     
130.                result = (date.getYear() + 1900) + "-" + (date.getMonth() + 1)      
131.                + "-" + date.getDate();     
132.            } else if (cellType == HSSFCell.CELL_TYPE_STRING) {     
133.                String date = getStringCellValue(cell);     
134.                result = date.replaceAll("[年月]", "-").replace("日", "").trim();     
135.            } else if (cellType == HSSFCell.CELL_TYPE_BLANK) {     
136.                result = "";     
137.            }     
138.        } catch (Exception e) {     
139.            System.out.println("日期格式不正确!");     
140.            e.printStackTrace();     
141.        }     
142.        return result;     
143.    }     
144.         
145.    public static void main(String[] args) {     
146.        try {     
147.            //对读取Excel表格标题测试     
148.            InputStream is = new FileInputStream("C:\\Excel表格测试.xls");     
149.            ExcelReader excelReader = new ExcelReader();     
150.            String[] title = excelReader.readExcelTitle(is);     
151.            System.out.println("获得Excel表格的标题:");     
152.            for (String s : title) {     
153.                System.out.print(s + " ");     
154.            }     
155.                 
156.            //对读取Excel表格内容测试     
157.            InputStream is2 = new FileInputStream("C:\\Excel表格测试.xls");     
158.            Map<Integer,String> map = excelReader.readExcelContent(is2);     
159.            System.out.println("获得Excel表格的内容:");     
160.            for (int i=1; i<=map.size(); i++) {     
161.                System.out.println(map.get(i));     
162.            }     
163.        } catch (FileNotFoundException e) {     
164.            System.out.println("未找到指定路径的文件!");     
165.            e.printStackTrace();     
166.        }     
167.    }     
168.}   
分享到:
评论

相关推荐

    应用POI组件读写Excel文档

    POI工具包可用来读写Excel,在java开发中可用来创建、导出信息到excel表格中,还可读取excel中的信息使用到应用程序中。

    java开发Excel所需 poi jxl两种jar包

    poi是一个Java api组件,用于处理execel和doc文件 jxl可以读取,创建,更新Excel文件,使用该api非windows系统也可以通过纯java来处理Excel。

    一个java用POI组件读写Excel的类

    一个java用POI读写Excel的类封装了一个读取Excel数据的方法和一个写入Excel数据的方法,写入的话可从数据库读取或自己写一个List...

    Java使用POI实现Excel报表的导入和导出

    利用开源组件POI3.0.2,用java语言实现了动态导出Excel文档,并且也实现了Excel文档的导入。有完整的例子,可直接使用。ExportExcel类为导出Excel报表通用类。 1.将源代码导入eclipse中 2.部署项目,启动tomcat...

    java操作EXCEL,jar包,含实例教程,poi-3.17

    HSSF (可怕的电子表格格式) : 它被用来读取和写入MS-Excel文件的xls格式。 XSSF (XML格式) : 它是用于MS-Excel中XLSX文件格式。 HPSF (可怕的属性设置格式) : 它用来提取MS-Office文件属性设置。 HWPF (可怕的字...

    java读写excel源码-pyexcel:用于在csv、ods、xls、xlsx和xlsm文件中读取、操作和写入数据的单一API

    java读写excel源码pyexcel - 让你专注于数据,而不是文件格式 支持项目 如果贵公司已将 pyexcel 及其组件嵌入到创收产品中,请在 github 上支持我,或维护该项目并进一步开发。 如果您是个人,也欢迎您支持我,无论...

    POI操作WORD 官方测试案例 DEMO.zip

    Apache POI 提供 Java 操作 Excel 解决方案(适用于 Excel97-2008)。 2 Apache POI的组件 Apache POI包含用于MS-Office的所有OLE2复合文档的类和方法。 此API的组件列表如下: POIFS:此组件是所有其他POI元素的...

    java对word、excel、pdf等操作.doc

    Java也可以使用 Apache POI 库来操作 Excel 文档。Apache POI 库是一个流行的 Java 库,提供了对 Microsoft Office 文件格式的读写支持。使用 Apache POI 库,可以实现读取、写入 Excel 文档等操作。 在使用 Apache...

    POI解析word2007文本及图片(已测试).doc

    Apache POI (Poor Obfuscation Implementation) 是一个 Java 库,用于读取和写入 Microsoft Office 文件,包括 Word、Excel、PowerPoint 等。 Apache POI 提供了对 Word 2007 文本和图片的解析功能,允许开发者读取...

    POI读取excel简介_动力节点Java学院整理

    主要介绍了POI读取excel简介,详细的介绍了什么是Apache POI和组件,有兴趣的可以了解了解一下

    poi报表导入导出.zip

    利用开源组件POI3.0.2,用java语言实现了动态导出Excel文档,并且也实现了Excel文档的导入。有完整的例子,可直接使用。ExportExcel类为导出Excel报表通用类。 1.将源代码导入eclipse中 2.部署项目,启动tomcat...

    java中导入导出Excel文件

    其中 HSSF 是 Jakarta POI 中的一个组件,提供了一组操纵 Windows 文档的 Java API,目前比较成熟的是 HSSF 接口,处理 MS Excel(97-2002)对象。 在使用 POI 之前,需要具备以下条件:JDK 1.4+ 和 POI 开发包。...

    NPOI操作Excel的组件

    NPOI是源于一个用于读取xls,doc,ppt文档的POI 项目,POI是Java项目,后面因为有.Net的市场,于是将POI移植到.Net上。在没有安装Microsoft Office Excel的机子上也可以对Excel进行操作。

    NPOI2.2.zip

    POI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目。  NPOI之所以强大,并不是因为它支持导出Excel,而是因为它支持导入Excel,并能"理解"OLE2文档结构,这也是其他一些Excel读写库比较弱的方面。通常...

    excel导出工具类

    excel的操作,在开发中是经常遇到的问题,也是程序员比较费心思的开发问题,虽然现在有jxl,poi等第三方开发组件的支持,对excel的操作变的简单了很多,但是大多数都不通用,在此提供一个excel导出工具,内含源码,...

    java范例开发大全源代码

     实例135 读取Excel文件中的内容 198  实例136 生成PDF文件 199  实例137 读取PDF文件中的内容 203  实例138 用iText生成Word文件 205  实例139 利用POI读取Word文件中的内容 208  7.3 字符流 209 ...

    java范例开发大全

    实例135 读取Excel文件中的内容 198 实例136 生成PDF文件 199 实例137 读取PDF文件中的内容 203 实例138 用iText生成Word文件 205 实例139 利用POI读取Word文件中的内容 208 7.3 字符流 209 实例140 按顺序创建文件 ...

    Java范例开发大全 (源程序)

     实例135 读取Excel文件中的内容 198  实例136 生成PDF文件 199  实例137 读取PDF文件中的内容 203  实例138 用iText生成Word文件 205  实例139 利用POI读取Word文件中的内容 208  7.3 字符流 209  ...

    Java范例开发大全(全书源程序)

    实例135 读取Excel文件中的内容 198 实例136 生成PDF文件 199 实例137 读取PDF文件中的内容 203 实例138 用iText生成Word文件 205 实例139 利用POI读取Word文件中的内容 208 7.3 字符流 209 实例140 按顺序...

    java范例开发大全(pdf&源码)

    实例135 读取Excel文件中的内容 198 实例136 生成PDF文件 199 实例137 读取PDF文件中的内容 203 实例138 用iText生成Word文件 205 实例139 利用POI读取Word文件中的内容 208 7.3 字符流 209 实例140 按顺序创建文件 ...

Global site tag (gtag.js) - Google Analytics