`

java读取excel数据 需要poi组件

    博客分类:
  • JAVA
阅读更多

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

  结构:

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

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

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

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

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

 

以下是实例程序:

package excelread;

import java.io.FileInputStream;   
import java.io.FileNotFoundException;   
import java.io.IOException;   
import java.io.InputStream;   
import java.util.Date;   
import java.util.HashMap;   
import java.util.Map;   
  
import org.apache.poi.hssf.usermodel.HSSFCell;   
import org.apache.poi.hssf.usermodel.HSSFRow;   
import org.apache.poi.hssf.usermodel.HSSFSheet;   
import org.apache.poi.hssf.usermodel.HSSFWorkbook;   
import org.apache.poi.poifs.filesystem.POIFSFileSystem;   
  
/**  
 * 操作Excel表格的功能类  
 * @author:hnylj  
 * @version 1.0  
 */  
public class ExcelReader {   
    private POIFSFileSystem fs;   
    private HSSFWorkbook wb;   
    private HSSFSheet sheet;   
    private HSSFRow row;   
    /**  
     * 读取Excel表格表头的内容  
     * @param InputStream  
     * @return String 表头内容的数组  
     *   
     */  
    public String[] readExcelTitle(InputStream is) {   
        try {   
            fs = new POIFSFileSystem(is);   
            wb = new HSSFWorkbook(fs);   
        } catch (IOException e) {   
            e.printStackTrace();   
        }   
        sheet = wb.getSheetAt(0);   
        row = sheet.getRow(0);   
        //标题总列数   
        int colNum = row.getPhysicalNumberOfCells();   
        String[] title = new String[colNum];   
        for (int i=0; i<colNum; i++) {   
            title[i] = getStringCellValue(row.getCell((short) i));   
        }   
        return title;   
    }   
       
    /**  
     * 读取Excel数据内容  
     * @param InputStream  
     * @return Map 包含单元格数据内容的Map对象  
     */  
    public Map<Integer,String> readExcelContent(InputStream is) {   
        Map<Integer,String> content = new HashMap<Integer,String>();   
        String str = "";   
        try {   
            fs = new POIFSFileSystem(is);   
            wb = new HSSFWorkbook(fs);   
        } catch (IOException e) {   
            e.printStackTrace();   
        }   
        sheet = wb.getSheetAt(0);   
        //得到总行数   
        int rowNum = sheet.getLastRowNum();   
        row = sheet.getRow(0);   
        int colNum = row.getPhysicalNumberOfCells();   
        //正文内容应该从第二行开始,第一行为表头的标题   
        for (int i = 1; i <= rowNum; i++) {   
            row = sheet.getRow(i);   
            int j = 0;   
            while (j<colNum) {   
        //每个单元格的数据内容用"-"分割开,以后需要时用String类的replace()方法还原数据   
        //也可以将每个单元格的数据设置到一个javabean的属性中,此时需要新建一个javabean   
                str += getStringCellValue(row.getCell((short) j)).trim() + "-";   
                j ++;   
            }   
            content.put(i, str);   
            str = "";   
        }   
        return content;   
    }   
       
    /**  
     * 获取单元格数据内容为字符串类型的数据  
     * @param cell Excel单元格  
     * @return String 单元格数据内容  
     */  
    private String getStringCellValue(HSSFCell cell) {   
        String strCell = "";   
        switch (cell.getCellType()) {   
        case HSSFCell.CELL_TYPE_STRING:   
            strCell = cell.getStringCellValue();   
            break;   
        case HSSFCell.CELL_TYPE_NUMERIC:   
            strCell = String.valueOf(cell.getNumericCellValue());   
            break;   
        case HSSFCell.CELL_TYPE_BOOLEAN:   
            strCell = String.valueOf(cell.getBooleanCellValue());   
            break;   
        case HSSFCell.CELL_TYPE_BLANK:   
            strCell = "";   
            break;   
        default:   
            strCell = "";   
            break;   
        }   
        if (strCell.equals("") || strCell == null) {   
            return "";   
        }   
        if (cell == null) {   
            return "";   
        }   
        return strCell;   
    }   
       
    /**  
     * 获取单元格数据内容为日期类型的数据  
     * @param cell Excel单元格  
     * @return String 单元格数据内容  
     */  
    private String getDateCellValue(HSSFCell cell) {   
        String result = "";   
        try {   
            int cellType = cell.getCellType();   
            if (cellType == HSSFCell.CELL_TYPE_NUMERIC) {   
                Date date = cell.getDateCellValue();   
                result = (date.getYear() + 1900) + "-" + (date.getMonth() + 1)    
                + "-" + date.getDate();   
            } else if (cellType == HSSFCell.CELL_TYPE_STRING) {   
                String date = getStringCellValue(cell);   
                result = date.replaceAll("[年月]", "-").replace("日", "").trim();   
            } else if (cellType == HSSFCell.CELL_TYPE_BLANK) {   
                result = "";   
            }   
        } catch (Exception e) {   
            System.out.println("日期格式不正确!");   
            e.printStackTrace();   
        }   
        return result;   
    }   
       
    public static void main(String[] args) {   
        try {   
            //对读取Excel表格标题测试   
            InputStream is = new FileInputStream("C:\\Excel表格测试.xls");   
            ExcelReader excelReader = new ExcelReader();   
            String[] title = excelReader.readExcelTitle(is);   
            System.out.println("获得Excel表格的标题:");   
            for (String s : title) {   
                System.out.print(s + " ");   
            }   
               
            //对读取Excel表格内容测试   
            InputStream is2 = new FileInputStream("C:\\Excel表格测试.xls");   
            Map<Integer,String> map = excelReader.readExcelContent(is2);   
            System.out.println("获得Excel表格的内容:");   
            for (int i=1; i<=map.size(); i++) {   
                System.out.println(map.get(i));   
            }   
        } catch (FileNotFoundException e) {   
            System.out.println("未找到指定路径的文件!");   
            e.printStackTrace();   
        }   
    }   
}  

 

分享到:
评论

相关推荐

    用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 ...

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

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

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

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

    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