`
keepwork
  • 浏览: 334340 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java 读取 Excel 读取 兼容2003,2007

阅读更多

开发者博客www.developsearch.com

 

 

需要jar包 ,至少要这几种
poi-3.7-20101029.jar
poi-ooxml-3.7-20101029.jar
poi-ooxml-schemas-3.7-20101029.jar
xmlbeans-2.3.0.jar

package com.yiwanj.core.util;

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 ExcelUtil {
    
    public static void main(String[] args) {
        File file = new File("D:\\Tomcat 6\\webapps\\export\\upload\\Book1.xlsx");
        try {
            List list = readExcel(file);
            for (int i = 0; i < list.size(); i++) {
                List one = (List) list.get(i);
                System.out.println(one.get(0));
                System.out.println(one.get(1));
                System.out.println(one.get(2));
                System.out.println(one.get(3));
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
     /**
     * 对外提供读取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;
}
}

 

分享到:
评论

相关推荐

    java读取excel文件,兼容2007

    通过以上步骤,你可以用Java有效地读取Excel文件,无论它们是2003的.xls格式还是2007及以后的.xlsx格式。Apache POI提供了丰富的API,允许你进行复杂的操作,如样式设置、公式计算、图表处理等,满足各种业务需求。

    java读取excel(兼容2003和2007)

    在Java编程中,读取Excel文件是一项常见的任务,特别是在数据处理和分析的场景下。Excel文件格式有两种主要版本,即2003年的.xls格式和2007年及以后的.xlsx格式。为了兼容这两种格式,Java引入了Apache POI库,这是...

    java读取excel(兼容2003和2007)[定义].pdf

    【Java读取Excel兼容2003和2007】 在Java中处理Excel文件时,我们需要确保代码能够兼容Microsoft Office的两个主要版本:2003和2007。这两个版本的Excel文件格式有所不同,2003使用的是.BIFF8格式(HSSF),而2007及...

    JAVA读取Excel,建库建表,并生成java实体

    总结,Java读取Excel并进行数据库建库建表及生成Java实体的过程涉及了Apache POI库的使用、数据库操作和源代码生成。理解这些步骤可以帮助你有效地处理类似的任务,提高开发效率。在实际应用中,你还需要考虑错误...

    java代码读取excel文件,同时兼容2003和2007

    在Java编程环境中,读取Excel文件是一项常见的任务,特别是在数据处理和分析的场景下。Excel文件格式有两种主要版本,即2003的.xls(基于BIFF格式)和2007及以后版本的.xlsx(基于OpenXML标准)。为了确保程序能够...

    java 读取Excel兼容2003,2007项目

    通过以上知识点的学习和实践,你可以掌握在Java中读取Excel文件,包括对Excel 2003和2007格式的兼容性处理。在实际应用中,可以根据需求进一步扩展功能,如写入Excel、合并单元格、格式化数据等。

    java 读取 Excel兼容2003,2007

    在Java编程中,读取Excel文件是一项常见的任务,特别是在数据处理和分析的场景下。Excel文件格式有多种,包括早期的.XLS(Excel 2003及更早版本)和后来的.XLSX(Excel 2007及更高版本)。为了在Java中兼容这两种...

    java读取excel所有页的数据

    本篇将详细介绍如何使用Java读取Excel所有页的数据,以及可能出现的问题和解决策略。 首先,我们需要引入能够处理Excel文件的库。Apache POI 是一个广泛使用的Java API,它允许程序员创建、修改和显示Microsoft ...

    poi读取excel2007和2003兼容工具例子

    在这个"poi读取excel2007和2003兼容工具例子"中,我们将探讨如何使用POI来读取不同版本的Excel文件,特别是Excel 2003(.xls)和Excel 2007及更高版本(.xlsx)。 1. **Apache POI库**:Apache POI是Apache软件基金...

    java编写的兼容2003、2007Excel文件读取工程

    在本项目中,我们关注的是“java编写的兼容2003、2007Excel文件读取工程”。这个工程的目标是实现一个Java程序,能够读取Microsoft Excel的两种主要格式:.xls(用于2003及更早版本)和.xlsx(用于2007及更高版本)...

    读取Excel并转化成对象

    /*** * 读取Excel文件里数据... * 读取Excel的兼容性/03/07以上 * 参数一读取所需的文件对象 * 参数二自定义需要对应实体对象相关的属性 * 参数三将数据转化成对应的class实体对象 * 参数四从文档的第几行读取 */

    java读取excel poi 方法

    ### Java读取Excel POI方法详解 #### 一、POI简介及背景 Apache POI 是一个用于处理 Microsoft Office 格式文件的开源库,它提供了读取、写入和修改这些文件的功能。POI 项目中最常用的部分是 HSSF 和 XSSF,分别...

    通过POI统一读取Excel文件(兼容97-2003和2007+两种格式)

    这篇博客“通过POI统一读取Excel文件(兼容97-2003和2007+两种格式)”正是介绍了如何使用Apache POI库来处理不同版本的Excel文件。 Apache POI 提供了两个主要的API来处理Excel文件:HSSF(Horrible Spreadsheet ...

    利用java读取Excel中的数据的方法.pdf

    本文档介绍如何使用Java语言读取Excel文件中的数据。由于文档中部分内容是通过OCR扫描而来,可能存在一些技术性识别错误和不完整情况,以下是根据提供的内容提炼的知识点整理。 首先,文档提到了读取Excel文件所需...

    Java读取Excel表格数据时(.xls、.xlsx 格式),需要引用的jar包

    总结起来,Java读取Excel数据涉及的主要知识点有:Apache POI库的使用,包括`.xls`和`.xlsx`格式的处理;Android环境下的兼容性考虑,可能需要使用`jxl`库;以及如何通过Java代码遍历Excel文件的行和单元格,获取并...

    poi读取excel文件实例(兼容excel2007)

    在“poi读取excel文件实例”中,我们将讨论如何使用Apache POI API来读取和操作Excel 2007文件。以下是一些关键知识点: 1. **创建工作簿对象**:首先,你需要通过`WorkbookFactory`类的`create()`方法打开或创建一...

    Java解析Excel兼容2003和2007(有实例和类包)

    2. **读取Excel文件**: 使用HSSFWorkbook处理.xls文件,XSSFWorkbook处理.xlsx文件。以下是一个简单的读取示例: ```java import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss....

    java读取excel ,xls和xlsx

    在Java编程环境中,读取Excel文件是一项常见的任务,特别是在数据处理和分析的场景下。Excel文件主要有两种格式:`.xls`(旧版的BIFF格式,适用于Excel 2003及更早版本)和`.xlsx`(新的OpenXML格式,适用于Excel ...

    java读取数据量大的excel文件(2003及2007)

    综上所述,Java读取大型Excel文件涉及的关键点在于选择合适的API,采用分块读取、迭代器、错误处理、性能优化和可能的数据库集成。理解并应用这些技术将帮助你在处理大数据量的Excel文件时更加得心应手。

Global site tag (gtag.js) - Google Analytics