`
毛山歌
  • 浏览: 5540 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

JAVA POI读取Office excel (2003,2007)

阅读更多
所需jar 包 :poi-3.6
poi-3.6-20091214.jar
poi-contrib-3.6-20091214.jar
poi-scratch.6-20091214.jar
geronimo-stax-api_1.0_spec-1.0.jar
xmlbeans-2.3.0.jar
读取excel 文件的 java 代码:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.LinkedList;
import java.util.List;
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.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 ReadExcel {

     /**
     * 对外提供读取excel 的方法
     * */
public static List<List<Object>> readExcel(File file) throws IOException{
   String fileName = file.getName();
   String extension = fileName.lastIndexOf(".")==-1?"":fileName.substring(fileName.lastIndexOf(".")+1);
   if("xls".equals(extension)){
    return read2003Excel(file);
   }else if("xlsx".equals(extension)){
    return read2007Excel(file);
   }else{
    throw new IOException("不支持的文件类型");
   }
}


/**
* 读取 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;
 
   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();
      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()));
      }
      break;
     case XSSFCell.CELL_TYPE_BOOLEAN:
      System.out.println(i+"行"+j+" 列 is Boolean type");
      value = cell.getBooleanCellValue();
      break;
     case XSSFCell.CELL_TYPE_BLANK:
      System.out.println(i+"行"+j+" 列 is Blank type");
      value = "";
      break;
     default:
      System.out.println(i+"行"+j+" 列 is default type");
      value = cell.toString();
     }
     if (value == null || "".equals(value)) {
      continue;
     }
     linked.add(value);
   
   }
    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>>();
   // 构造 XSSFWorkbook 对象,strPath 传入文件路径
   XSSFWorkbook xwb = new XSSFWorkbook(new FileInputStream(file));
   // 读取第一章表格内容
   XSSFSheet sheet = xwb.getSheetAt(0);
   Object value = null;
   XSSFRow row = null;
   XSSFCell cell = null;
   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();
      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()));
      }
      break;
     case XSSFCell.CELL_TYPE_BOOLEAN:
      System.out.println(i+"行"+j+" 列 is Boolean type");
      value = cell.getBooleanCellValue();
      break;
     case XSSFCell.CELL_TYPE_BLANK:
      System.out.println(i+"行"+j+" 列 is Blank type");
      value = "";
      break;
     default:
      System.out.println(i+"行"+j+" 列 is default type");
      value = cell.toString();
     }
     if (value == null || "".equals(value)) {
      continue;
     }
     linked.add(value);
    }
    list.add(linked);
   }
   return list;
}
}
说明:该类中共封装了三个方法,对外提供的读取excel文件的方法,两个私有的分别读取excel2003和excel2007的方法。外部使用,只需调用readExcel 方法,传入一个File 参数,程序根据文件扩展名来判断选取那个方法来读取Excel文件。
分享到:
评论

相关推荐

    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 poi 读取excel 2007

    以上就是使用Java POI读取Excel 2007文件并将内容存储到List的基本过程。这个过程可以根据实际需求进行调整,比如处理表头、忽略空行、处理特殊格式的单元格等。在处理大数据量时,还需要考虑性能优化,例如使用迭代...

    java POI读取excel文件数据

    在这个场景中,我们将详细探讨如何使用Java POI读取Excel文件中的数据,包括获取总行数、列数、单元格内容、合并单元格、行高、列宽以及图片等信息。 首先,确保在项目中已经引入了Apache POI的依赖库。如果你使用...

    java POI读取2003 2007 Excel

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

    poi 解析 office excel 2003,2007 word 2003,2007 的示例

    本示例将详细介绍如何使用Apache POI解析Office Excel 2003和2007,以及Word 2003和2007的文件。 首先,我们来看Excel的解析。Excel 2003使用的是.BOOK文件格式(HSSFWorkbook),而2007及以上版本使用的是.XLSX...

    java poi读取office03和office07jar包

    Java POI 是一个开源项目,由Apache软件基金会维护,它提供了API用于读写Microsoft Office格式的文件,包括Word(.doc)、Excel(.xls/.xlsx)和PowerPoint(.ppt/.pptx)。在处理Office 03和07版本的文件时,Java ...

    java_poi实现excel导入导出

    Java POI 是一个流行的 Java 库,用于处理 Microsoft Office 文件格式,包括 Excel 文件。在本文中,我们将详细介绍如何使用 Java POI 实现 Excel 导入导出功能。 1. 什么是 Java POI Java POI 是一个开源的 Java ...

    Java通过POI读取Excel遍历数据,批量生成word文档

    Apache POI是一个开源项目,它允许Java开发者处理Microsoft Office格式的文件,如Excel(.xlsx或.xls)和Word(.docx)。 首先,我们需要导入Apache POI的相关依赖。在Maven项目中,可以在pom.xml文件中添加以下...

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

    在Java编程环境中,Apache POI库是一个非常实用的工具,它允许开发者处理Microsoft Office格式的文件,包括Excel的XLS和XLSX格式。本文将详细介绍如何使用Apache POI库来读取Excel 2007及以上版本(即XLSX格式)的...

    POI读取Excel合并单元格并储存

    Apache POI是一个强大的库,允许程序员使用Java来创建、修改和显示Microsoft Office格式的文件,包括Excel(XLS和XLSX)。在我们的场景中,我们将关注如何读取Excel文件,尤其是处理那些合并了单元格的行与列,因为...

    利用POI读取excel写入到word

    要实现"利用POI读取excel写入到word",我们需要以下步骤: 1. **准备环境**:首先,确保你的项目已经引入了Apache POI的依赖。在给定的压缩包中,"poi - 副本"可能是包含POI库的JAR文件,你需要将其添加到你的项目...

    POI 读取 WORD EXCEL POWERPOINT 2003 2007

    Apache POI 是一个开源项目,专门用于处理 Microsoft Office 格式文档,如 Word、Excel 和 PowerPoint。这个项目为 Java 开发者提供了强大的 API,使得在没有安装 Microsoft Office 的情况下,也能进行读取、写入...

    POI读取2007 Excel文件

    标题中的“POI读取2007 Excel文件”指的是使用Apache POI库来解析和操作Microsoft Office Open XML (OOXML)格式的Excel文件,这种格式通常以.xlsx为扩展名。Apache POI是一个流行的Java库,它允许开发人员在Java应用...

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

    Java POI 是一个开源库,专门用于处理Microsoft Office格式的文件,尤其是Excel。在使用Java POI进行Excel读取操作时,需要导入一系列的库文件,以确保程序能够正确解析和操作Excel数据。这里提到的文件是Java POI库...

    java使用 poi 读取excel

    Apache POI 是一个流行的开源库,它允许 Java 开发者创建、修改和显示 Microsoft Office 格式的文件,其中包括 Excel(XLS 和 XLSX)文件。下面将详细介绍如何使用 POI 来读取 Excel 数据。 首先,我们需要添加 ...

    (实例)java poi完美解决excel2003和2007、2010之间兼容问题

    在Java世界中,当需要处理Excel数据时,POI库是一个常用的选择,尤其在需要跨版本兼容性时,如在Excel 2003、2007和2010之间。以下将详细讲解如何使用Java POI来完美解决这些版本之间的兼容问题。 首先,Excel 2003...

    JAVA读取WORD_EXCEL_POWERPOINT_PDF文件的方法(poi)

    JAVA 读取 WORD_EXCEL_POWERPOINT_PDF 文件的方法(poi) JAVA 读取 WORD_EXCEL_POWERPOINT_PDF 文件的方法是使用 Apache POI 库来实现的。POI 库是一个开放源代码的 Java 库,提供了对 Microsoft Office 文件格式...

    Java用poi读取excel文件

    Java 使用 POI 读取 Excel 文件 Java 是一种广泛使用的编程语言,而 Excel 是一种常用的电子表格软件。有时候,我们需要在 Java 程序中读取 Excel 文件的内容,例如将 Excel 表格中的数据导入到数据库中或者进行...

    JAVA用POI读取和创建2003和2007版本Excel完美示例

    在Java中,POI库提供了读取和写入Excel文件的强大功能,包括对2003(.xls)和2007及以上版本(.xlsx)的支持。下面我们将详细讲解如何使用POI进行Excel文件的读取和创建。 1. **安装POI库** 要使用POI,首先需要将...

Global site tag (gtag.js) - Google Analytics