Java解析Excel文件

简介:
Java代码   收藏代码
  1. 以下是项目当中用到的很简单的Java解析Excel的例子,和大家分享,需要引入jxl.jar包  
  2. public ArrayList parseVideo() {  
  3.   
  4.         try {  
  5.             Workbook book = Workbook.getWorkbook(new File("ua.xls"));  
  6.             Sheet se = book.getSheet(1);得到第1个sheet(Excel通常会有3个Sheet)  
  7.             int rownum = se.getRows();   //得到总行数  
  8.             // Cell ce = null;  
  9.             // StringBuffer su = new StringBuffer();  
  10.             ArrayList list = new ArrayList();  
  11.             DBManager db = new DBManager();  
  12.             conn = db.getConnection();  
  13.             stmt = conn.createStatement();  
  14.             for (int i = 1; i < rownum; i++) {  
  15.                 Mobilemeter rea = new Mobilemeter();  
  16.                 rea.setMobileID(se.getCell(0, i).getContents());  //第i行的第1列  
  17.                 rea.setModel(se.getCell(3, i).getContents());//第i行的第4列  
  18.                 rea.setShortUA(se.getCell(11, i).getContents());  
  19.                 String arr = se.getCell(8, i).getContents();  
  20.                 String ayy = arr.replaceAll("\\u002A""x");  
  21.                 rea.setPicFormat(se.getCell(8, i).getContents());  
  22.                 rea.setResourceRing(se.getCell(9, i).getContents());  
  23.                 rea.setRingFormat(se.getCell(10, i).getContents());  
  24.                 list.add(rea);  
  25.             }  
  26.             book.close();  
  27.             return list;  
  28.         } catch (Exception e) {  
  29.             e.printStackTrace();  
  30.             return null;  
  31.         }  
  32.   
  33.     }  











1. 环境
   jdk1.6
   poi3.6
2. 解析工具类


import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.apache.log4j.Logger;
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;

public class ExcelParser implements Iterator<List<String>> {
    
    private static final Logger logger = Logger.getLogger(ExcelParser.class);
    
    private InputStream is = null;
    private Iterator<?> rowIterator = null;

    public ExcelParser(String excelFile){
        HSSFWorkbook book = null;
        HSSFSheet sheet = null;
        try {
            is = new FileInputStream(excelFile);
            book = new HSSFWorkbook(is);
            sheet = book.getSheetAt(0);
            rowIterator = sheet.rowIterator();
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
        }
    }
    
    public boolean hasNext(){
        return rowIterator.hasNext();
    }
    
    public List<String> next(){
        HSSFRow row = (HSSFRow)rowIterator.next();
        List<String> erow = new ArrayList<String>();
        Iterator<?> cellIterator = row.cellIterator();
        while(cellIterator.hasNext()){
            HSSFCell cell = (HSSFCell)cellIterator.next();
            erow.add(this.getCellValue(cell));
        }
        return erow;
    }
    
    public void remove(){
        throw new UnsupportedOperationException("本EXCEL解析器是只读的."); 
    }
    
    private String getCellValue(HSSFCell cell){
        String value = null;
        //简单的查检列类型
        switch(cell.getCellType())
        {
            case HSSFCell.CELL_TYPE_STRING://字符串
                value = cell.getRichStringCellValue().getString();
                break;
            case HSSFCell.CELL_TYPE_NUMERIC://数字
                long dd = (long)cell.getNumericCellValue();
                value = dd+"";
                break;
            case HSSFCell.CELL_TYPE_BLANK:
                value = "";
                break;    
            case HSSFCell.CELL_TYPE_FORMULA:
                value = String.valueOf(cell.getCellFormula());
                break;
            case HSSFCell.CELL_TYPE_BOOLEAN://boolean型值
                value = String.valueOf(cell.getBooleanCellValue());
                break;
            case HSSFCell.CELL_TYPE_ERROR:
                value = String.valueOf(cell.getErrorCellValue());
                break;
            default:
                break;
        }
        return value;
    }
    
    public void close(){
        if(is != null){
            try {
                is.close();
            } catch (IOException e) {
                logger.error(e.getMessage(), e);
            }
        }
    }//close
    
}
 
3. 用法
ExcelParser ep = new ExcelParser("d:/test.xls");
        while(ep.hasNext()){
            List<String> row = ep.next();
            System.out.println(row.get(0) + ", " + row.get(1));
        }
        ep.close();











本文转自yunlielai51CTO博客,原文链接:http://blog.51cto.com/4925054/1107659,如需转载请自行联系原作者

相关文章
|
8天前
|
Java
Java中ReentrantLock释放锁代码解析
Java中ReentrantLock释放锁代码解析
25 8
|
10天前
|
XML JavaScript 前端开发
xml文件使用及解析
xml文件使用及解析
|
23天前
|
算法 Linux C++
【Linux系统编程】解析获取和设置文件信息与权限的Linux系统调用
【Linux系统编程】解析获取和设置文件信息与权限的Linux系统调用
29 0
|
23天前
|
Java
有关Java发送邮件信息(支持附件、html文件模板发送)
有关Java发送邮件信息(支持附件、html文件模板发送)
25 1
|
24天前
|
监控 数据处理 索引
使用Python批量实现文件夹下所有Excel文件的第二张表合并
使用Python和pandas批量合并文件夹中所有Excel文件的第二张表,通过os库遍历文件,pandas的read_excel读取表,concat函数合并数据。主要步骤包括:1) 遍历获取Excel文件,2) 读取第二张表,3) 合并所有表格,最后将结果保存为新的Excel文件。注意文件路径、表格结构一致性及异常处理。可扩展为动态指定合并表、优化性能、日志记录等功能。适合数据处理初学者提升自动化处理技能。
21 1
|
27天前
|
Java
java中替换文件内容
java中替换文件内容
13 1
|
28天前
|
安全 Java 数据库连接
jdbc解析excel文件,批量插入数据至库中
jdbc解析excel文件,批量插入数据至库中
19 0
|
6天前
|
Java
Java 15 神秘登场:隐藏类解析未知领域
Java 15 神秘登场:隐藏类解析未知领域
10 0
|
6天前
|
安全 Java 编译器
接口之美,内部之妙:深入解析Java的接口与内部类
接口之美,内部之妙:深入解析Java的接口与内部类
25 0
接口之美,内部之妙:深入解析Java的接口与内部类
|
24天前
|
Java 程序员 C#
静态构造方法解析,Java新手必看技能
静态构造方法解析,Java新手必看技能
8 0

推荐镜像

更多