当前位置:软件学习 > Excel >>

java 读取 Excel 兼容2003,2007

兼容问题不好解决。 所以要分开判断解析。

不过之前还要准备一些jar包。

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

 

 

 


[java]
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 lis

补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,