`

Java POI 读取Office excel (2003,2007)及相关jar包

阅读更多


poi-3.7-20101029.jar,下载地址:http://download.csdn.net/detail/evangel_z/4107089

geronimo-stax-api_1.0_spec-1.0.jar,下载地址:http://download.csdn.net/detail/evangel_z/4107083

xmlbeans-2.3.0.jar,下载地址:http://download.csdn.net/detail/evangel_z/4107140

poi-ooxml-3.7-20101029.jar,下载地址:http://download.csdn.net/detail/evangel_z/4107145

poi-ooxml-schemas-3.7-20101029.jar,下载地址:http://download.csdn.net/detail/evangel_z/4108997

以上5个jar,就可读取Excel 2003;

----------------------------------------------------------------------------------------------------------------------------------------

读取Excel 2007,请加上dom4j-1.6.1.jar,下载地址:http://download.csdn.net/detail/evangel_z/6739735

----------------------------------------------------------------------------------------------------------------------------------------

poi-3.6-20091214.jar,下载地址:http://download.csdn.net/detail/evangel_z/3895051
poi-contrib-3.6-20091214.jar,下载地址:http://download.csdn.net/detail/evangel_z/4107197

poi-scratch.6-20091214.jar,下载地址:http://download.csdn.net/detail/evangel_z/4107204
读取excel 文件的 java 代码:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.PushbackInputStream;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.LinkedList;
import java.util.List;

import org.apache.poi.POIXMLDocument;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
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;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class read_Excel{
    /**
     * 对外提供读取excel 的方法
     */
    public static List<List<Object>> readExcel(File file) throws IOException{
        List<List<Object>> list = new LinkedList<List<Object>>();
        InputStream inp;
        try {
            inp = new FileInputStream(file);
            if(! inp.markSupported()) {
                inp = new PushbackInputStream(inp,;
            }
            try {
                if(POIFSFileSystem.hasPOIFSHeader(inp)) {
                    list = read2003Excel(file);
                }
                if(POIXMLDocument.hasOOXMLHeader(inp)) {
                    list = read2007Excel(file);
                }
            } catch (IOException e) {
                 throw new IOException("不支持的文件类型");
            }
          
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        return list;
    }

    /**
     * 读取 office 2003 excel
     * 
     * @throws IOException
     * @throws FileNotFoundException
     */
    private static List<List<Object>> read2003Excel(File file)
            throws IOException {
        List<List<Object>> list = new LinkedList<List<Object>>();
        HSSFWorkbook hwb = new HSSFWorkbook(new FileInputStream(file));
        HSSFSheet sheet = hwb.getSheetAt(0);
        Object value = null;
        HSSFRow row = null;
        HSSFCell cell = null;
        System.out.println("读取office 2003 excel内容如下:");
        for (int i = sheet.getFirstRowNum(); i <= sheet
                .getPhysicalNumberOfRows(); i++) {
            row = sheet.getRow(i);
            if (row == null) {
                continue;
            }
            List<Object> linked = new LinkedList<Object>();
            for (int j = row.getFirstCellNum(); j <= row.getLastCellNum(); j++) {
                cell = row.getCell(j);
                if (cell == null) {
                    continue;
                }
                DecimalFormat df = new DecimalFormat("0");// 格式化 number String
                // 字符
                SimpleDateFormat sdf = new SimpleDateFormat(
                        "yyyy-MM-dd HH:mm:ss");// 格式化日期字符串
                DecimalFormat nf = new DecimalFormat("0.00");// 格式化数字
                switch (cell.getCellType()) {
                case XSSFCell.CELL_TYPE_STRING:
                    // System.out.println(i + "行" + j + " 列 is String type");
                    value = cell.getStringCellValue();
                    System.out.print("  " + value + "  ");
                    break;
                case XSSFCell.CELL_TYPE_NUMERIC:
                    // System.out.println(i + "行" + j
                    // + " 列 is Number type ; DateFormt:"
                    // + cell.getCellStyle().getDataFormatString());
                    if ("@".equals(cell.getCellStyle().getDataFormatString())) {
                        value = df.format(cell.getNumericCellValue());

                    } else if ("General".equals(cell.getCellStyle()
                            .getDataFormatString())) {
                        value = nf.format(cell.getNumericCellValue());
                    } else {
                        value = sdf.format(HSSFDateUtil.getJavaDate(cell
                                .getNumericCellValue()));
                    }
                    System.out.print("  " + value + "  ");
                    break;
                case XSSFCell.CELL_TYPE_BOOLEAN:
                    // System.out.println(i + "行" + j + " 列 is Boolean type");
                    value = cell.getBooleanCellValue();
                    System.out.print("  " + value + "  ");
                    break;
                case XSSFCell.CELL_TYPE_BLANK:
                    // System.out.println(i + "行" + j + " 列 is Blank type");
                    value = "";
                    System.out.print("  " + value + "  ");
                    break;
                default:
                    // System.out.println(i + "行" + j + " 列 is default type");
                    value = cell.toString();
                    System.out.print("  " + value + "  ");
                }
                if (value == null || "".equals(value)) {
                    continue;
                }
                linked.add(value);

            }
            System.out.println("");
            list.add(linked);
        }

        return list;
    }

    /**
     * 读取Office 2007 excel
     */

    private static List<List<Object>> read2007Excel(File file)
            throws IOException {

        List<List<Object>> list = new LinkedList<List<Object>>();
        // String path = System.getProperty("user.dir") +
        // System.getProperty("file.separator")+"dd.xlsx";
        // System.out.println("路径:"+path);
        // 构造 XSSFWorkbook 对象,strPath 传入文件路径
        XSSFWorkbook xwb = new XSSFWorkbook(new FileInputStream(file));

        // 读取第一章表格内容
        XSSFSheet sheet = xwb.getSheetAt(0);
        Object value = null;
        XSSFRow row = null;
        XSSFCell cell = null;
        System.out.println("读取office 2007 excel内容如下:");
        for (int i = sheet.getFirstRowNum(); i <= sheet
                .getPhysicalNumberOfRows(); i++) {
            row = sheet.getRow(i);
            if (row == null) {
                continue;
            }
            List<Object> linked = new LinkedList<Object>();
            for (int j = row.getFirstCellNum(); j <= row.getLastCellNum(); j++) {
                cell = row.getCell(j);
                if (cell == null) {
                    continue;
                }
                DecimalFormat df = new DecimalFormat("0");// 格式化 number String
                // 字符
                SimpleDateFormat sdf = new SimpleDateFormat(
                        "yyyy-MM-dd HH:mm:ss");// 格式化日期字符串
                DecimalFormat nf = new DecimalFormat("0.00");// 格式化数字

                switch (cell.getCellType()) {
                case XSSFCell.CELL_TYPE_STRING:
                    // System.out.println(i + "行" + j + " 列 is String type");
                    value = cell.getStringCellValue();
                    System.out.print("  " + value + "  ");
                    break;
                case XSSFCell.CELL_TYPE_NUMERIC:
                    // System.out.println(i + "行" + j
                    // + " 列 is Number type ; DateFormt:"
                    // + cell.getCellStyle().getDataFormatString());
                    if ("@".equals(cell.getCellStyle().getDataFormatString())) {
                        value = df.format(cell.getNumericCellValue());

                    } else if ("General".equals(cell.getCellStyle()
                            .getDataFormatString())) {
                        value = nf.format(cell.getNumericCellValue());
                    } else {
                        value = sdf.format(HSSFDateUtil.getJavaDate(cell
                                .getNumericCellValue()));
                    }
                    System.out.print("  " + value + "  ");
                    break;
                case XSSFCell.CELL_TYPE_BOOLEAN:
                    // System.out.println(i + "行" + j + " 列 is Boolean type");
                    value = cell.getBooleanCellValue();
                    System.out.print("  " + value + "  ");
                    break;
                case XSSFCell.CELL_TYPE_BLANK:
                    // System.out.println(i + "行" + j + " 列 is Blank type");
                    value = "";
                    // System.out.println(value);
                    break;
                default:
                    // System.out.println(i + "行" + j + " 列 is default type");
                    value = cell.toString();
                    System.out.print("  " + value + "  ");
                }
                if (value == null || "".equals(value)) {
                    continue;
                }
                linked.add(value);
            }
            System.out.println("");
            list.add(linked);
        }
        return list;
    }
}
分享到:
评论

相关推荐

    Java POI读取Office excel (2003,2007)jar包集合

    Java POI读取Office excel (2003,2007)及相关jar包。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    java poi读取office2003jar包

    这里我们将详细讲解如何使用Java POI读取Office 2003的Excel文件,并介绍相关的知识点。 1. **Java POI 概述** Java POI 提供了HSSF(Horrible Spreadsheet Format)API来处理Excel 2003及更早版本的文件。HSSF...

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

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

    java poi读取office03和office07jar包

    下面我们将详细探讨如何使用Java POI来读取不同版本的Office文件,以及如何导入所需的jar包。 首先,我们需要理解Java POI的主要组件: 1. **HSSF (Horrible Spreadsheet Format)**:这是针对老版的Microsoft ...

    java poi读取excel表格数据专用jar包 包括(dom4j和xmlbeans包)

    5. **读取Excel数据**:使用POI读取Excel数据的基本步骤包括: - 加载工作簿:创建HSSFWorkbook对象(.xls)或XSSFWorkbook对象(.xlsx)。 - 访问工作表:通过工作簿对象获取Sheet对象,代表Excel中的工作表。 -...

    java 通过poi操作excel jar包

    Apache POI是一个开源项目,提供了丰富的API,使得Java开发者能够轻松地与MS Office格式交互,包括XLS(Excel 97-2003)和XLSX(Excel 2007及以后的版本)。 标题中的"java通过poi操作excel jar包"指的是使用Apache...

    poi读取Excel用到的jar包

    标题提到的“poi读取Excel用到的jar包”指的是在Java项目中使用POI库进行Excel操作所需引入的依赖文件。这些jar包在描述中给出,包括了以下几个: 1. poi-ooxml-schemas-3.8-beta5-20111217.jar:这个文件包含了...

    Java实现Excel读写的poi 5.2.1版本jar

    Java中的Apache POI库是一个强大的工具,用于读取和写入Microsoft Office格式的文件,特别是Excel的XLS和XLSX格式。在这个5.2.1版本中,POI提供了对Excel电子表格的强大支持,包括读取数据、修改内容、创建新工作簿...

    poi读取excel的jar包

    标题中的"poi读取excel的jar包"指的是Apache POI库的一个版本,它包含了读取Excel 2007文件所需的类和方法。在Java程序中,引入这个jar包后,开发者可以编写代码来处理.xlsx文件,无论是读取数据、解析工作表还是...

    使用POI导入导出Excel2003、2007poi jar包文件

    在这个场景中,我们关注的是如何使用POI库来导入和导出Excel 2003及2007版本的数据。以下是对POI库以及相关jar包的详细解释: 1. **Apache POI**:这是由Apache软件基金会开发的一个Java库,它允许Java应用程序创建...

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

    它提供了对Office Open XML文件格式的理解,使得POI能够处理Excel 2007及以后版本的.xlsx文件。 2. **xmlbeans-2.3.0.jar**:XMLBeans是一个Java库,它将XML文档映射到Java对象上。在Java POI中,XMLBeans用于解析...

    poi读取excel所需jar包,需要的自取

    标题提到的"poi读取excel所需jar包"主要涉及以下组件: 1. **poi-3.8-20120326.jar**:这是Apache POI的主要库,包含了处理Excel(HSSF和XSSF)以及其他Office文档的核心功能。版本3.8是一个较早的版本,但仍然能够...

    java poi操作excel批量导入导出项目需要的jar包

    Java中的Apache POI库是处理Microsoft Office文档的强大工具,尤其在Excel操作方面。它允许开发者在Java应用程序中创建、修改和读取Excel文件。在进行批量导入和导出Excel数据时,Apache POI是一个非常实用的选择。...

    poijar包适用excel2003和excel2007

    《PoIjar包在Excel2003与Excel2007中的应用详解》 在信息化时代,数据处理和分析已经成为各行各业不可或缺的一部分,而Excel作为其中的翘楚,以其强大的功能和易用性赢得了广大用户的青睐。对于Java开发者来说,...

    poi java读取excel所需jar包

    4. **使用Apache POI读取Excel**: - 创建`Workbook`对象:这是处理Excel文件的核心,可以是`HSSFWorkbook`(处理.xls文件)或`XSSFWorkbook`(处理.xlsx文件)。 - 打开`Sheet`:工作簿内包含了多个工作表(Sheet...

    java POI读取2003 2007 Excel

    本文将深入探讨如何使用Java POI读取2003和2007版的Excel文件。 首先,你需要在项目中引入POI相关的jar包。通常,这包括`poi-ooxml-schemas`、`poi-ooxml`、`poi`这三个核心库。这些库包含了处理Excel文件所需的...

    java poi所需的jar包

    - **添加依赖**: 首先,你需要将Apache POI相关的jar包添加到你的项目类路径中。在你的描述中提到的"ApachePoiAllJar"应该包含了所有必要的jar文件,包括poi、poi-ooxml、poi-ooxml-schemas、poi-scratchpad等。 - *...

    Java读取Excel所需jar包 (poi.jar等)

    本篇文章将详细探讨使用Apache POI读取Excel文件所需的jar包,以及如何在Java项目中集成和使用这些库。 首先,Apache POI的核心jar包是poi-ooxml-schemas和poi-ooxml。这两个jar包提供了对Excel文件的XML Schema...

    android POI 读取excel 精简jar

    1. **jxl.jar**: 这是JExcelAPI的库文件,一个早期的Java库,用于处理Excel 97-2003格式的.xls文件。它支持读取、写入和修改Excel文件,但不支持较新的.xlsx格式。由于它的轻量级特性,对于只需要处理.xls文件的...

    java excel poi方式需要的jar包

    以上是对Java使用Apache POI库处理Excel文件所需jar包及相关知识点的详细解释。在实际开发中,确保使用最新稳定版本,并结合官方文档和示例代码,可以更高效地利用POI实现各种复杂的Excel操作。

Global site tag (gtag.js) - Google Analytics