`
gaozzsoft
  • 浏览: 427236 次
  • 性别: 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.}  
分享到:
评论

相关推荐

    用Java程序读取Excel表格内容并显示在Swing中

    首先,我们需要引入两个关键库:Apache POI用于读取Excel文件,而Swing则是Java GUI的主要组件库。Apache POI是一个开源项目,它提供了API来操作Microsoft Office格式的文件,包括Excel(.xls和.xlsx)。 1. **安装...

    java读取excel文件生成矩阵

    在Java编程中,读取...以上就是使用Java读取Excel文件生成矩阵的基本步骤。实际开发中,你可能还需要处理更多细节,如异常处理、数据验证、优化性能等。希望这个介绍能帮助你理解这个过程,并在实际项目中灵活应用。

    java_poi实现excel导入导出

    Java POI 实现 Excel 导入导出 Java POI 是一个流行的 Java 库,用于处理 Microsoft Office 文件格式,包括 ...在本文中,我们已经详细介绍了如何使用 Java POI 实现 Excel 导入导出功能,包括读取和写入 Excel 文件。

    poi-3.8组件

    3. **数据读写**:Apache POI允许开发者逐行或逐单元格地读取Excel数据,也可以一次性读取整个工作簿。写入数据时,可以创建新的工作表、添加行和单元格、设置数据格式等。 4. **样式与格式**:POI支持设置单元格的...

    读取Excel的数据jar poi

    本文将深入探讨如何使用POI库通过Java读取Excel数据,并介绍相关的jar文件。 首先,我们需要了解POI的三个主要组件: 1. poi-3.0.2-FINAL-20080204.jar:这是核心库,包含了处理Excel(HSSF)和Word(HWPF)文档的...

    java 使用poi组件处理 excel word

    本文将深入探讨如何使用POI组件来处理Excel和Word文档,以及如何通过模板动态生成Excel表格。 一、Apache POI简介 Apache POI 是一个开源项目,它的主要功能是读取和写入Microsoft Office格式的文件,如.XLS(Excel...

    java的poi组件

    Java的Apache POI组件是用于处理Microsoft Office格式文件的一个强大工具,特别在数据导入和导出方面表现出色。POI项目始于2001年,旨在提供一个纯Java的解决方案来读取、写入和修改Microsoft Office文档,包括Excel...

    Android开发之读取Excel表格数据

    - **Apache POI库**:为了读取Excel数据,我们需要一个库,如Apache POI。它是Java中用于处理Microsoft Office文档的库,包括Excel。首先,在你的build.gradle文件中添加POI依赖。 ```groovy dependencies { ...

    java读取Excel导出Html对应的table代码

    在Java编程中,读取Excel文件并将其导出为HTML表格是一项常见的任务,尤其是在数据处理和Web应用开发中。这个任务通常涉及到使用第三方库来处理Excel文件,因为Java标准库并不直接支持Excel格式。本篇将详细介绍如何...

    java excel 组件 poi3.1

    在标题提到的"poi3.1"版本中,该库已经相当成熟,为开发人员提供了丰富的功能来创建、修改和读取Excel文件。在本文中,我们将深入探讨Apache POI 3.1的核心概念、使用场景以及如何通过它在Java应用程序中操作Excel。...

    C#中读取Excel表格数据实例

    本示例将深入探讨如何在C#中不依赖Microsoft Office组件来读取Excel表格数据,这通常通过使用第三方库或者.NET Framework提供的System.Data.OleDb组件实现。 首先,我们介绍最常用的方法之一,即使用`System.Data....

    Java使用apache POI读取Excel2007以上代码以及所需jar包

    本文将详细介绍如何使用Apache POI库来读取Excel 2007及以上版本(即XLSX格式)的文件,并提供所需的jar包信息。 首先,要使用Apache POI读取XLSX文件,你需要确保引入了正确的依赖。Apache POI项目提供了多个组件...

    应用POI组件读写Excel文档

    本文将深入探讨如何使用POI组件来处理Excel文档,包括创建、填充数据、读取信息以及在实际应用中的使用场景。 1. **POI组件介绍** Apache POI是一个开源项目,最初由Glen Stampoultzis创建,后来成为Apache软件...

    POI读取EXCEL教程

    读取Excel文件使用HSSF的usermodel API非常直观。首先,你需要创建一个`InputStream`,然后实例化`HSSFWorkbook`: ```java InputStream myxls = new FileInputStream("workbook.xls"); HSSFWorkbook wb = new ...

    java poi读取Excel需要导入的所有包

    Java POI 是一个开源库,...因此,为了确保Java POI能够顺利读取Excel文件,开发者必须确保项目配置中包含了上述所有必要的库文件。同时,根据项目需求,可能还需要更新到最新版本的POI库,以获得更好的性能和兼容性。

    poi包 EXCEL模板读取填数据并导出以及在模板某行插入新的行

    标题中的“poi包 EXCEL模板读取填数据并导出以及在模板某行插入新的行”涉及到了Apache POI库的使用,这是一个Java API,专门用于处理Microsoft Office格式的文件,如Excel。以下是对这个主题的详细解释: Apache ...

    java读取excel文件jar包20181223

    Java读取Excel文件是开发过程中常见的任务,尤其是在处理数据导入导出、数据分析或者报表生成时。这个名为"java读取excel文件jar包20181223"的资源可能包含了一些帮助Java开发者实现这一功能的库。下面将详细讨论...

    JAVA POI 4.0 对Excel读写整理LIB以及样例工程

    这个库允许开发者以编程方式创建、修改和读取Excel文档,极大地拓展了Java在电子表格处理上的能力。POI 4.0是该库的一个较新版本,相较于之前的版本,它可能包含了更多优化、性能提升和新的API特性。 首先,让我们...

    poi 读取EXCEL所需要的JAR

    在Java环境中,如果你需要使用POI库来读取、写入或操作Excel文件,你需要确保你的项目中包含了正确的JAR文件。在这个场景中,你提到的几个JAR文件都是Apache POI的不同版本和组件: 1. **poi-3.8.jar**:这是Apache...

    java 读写Excel组件

    使用POI读取Excel文件时,首先需要创建`FileInputStream`对象,然后通过`WorkbookFactory`创建对应的`Workbook`对象。`Workbook`代表整个Excel文件,而`Sheet`代表单个工作表。接着,通过`Row`和`Cell`对象访问具体...

Global site tag (gtag.js) - Google Analytics