博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java解析Excel文件
阅读量:6898 次
发布时间:2019-06-27

本文共 3398 字,大约阅读时间需要 11 分钟。

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,如需转载请自行联系原作者
你可能感兴趣的文章
Android中Parcelable接口的使用
查看>>
我的友情链接
查看>>
java反射简单例子
查看>>
spring-session redis集群配置步骤总结
查看>>
Broadcom 4365(如:Dell vostro 3460)笔记本wifi无法使用解决办法
查看>>
LVS/DR+heartbeat实现高可用负载均衡服务
查看>>
单臂路由的原理及实验
查看>>
web前端开发中浏览器兼容问题(六)
查看>>
程序员应该怎样?
查看>>
离线快速部署Mirantis Openstack 9.0
查看>>
至少我还有腿
查看>>
怎样设计才能让文字排版更好看(三)
查看>>
【转】panabit+syslog打造中小型企业流量监控系统
查看>>
选高效服务器要精挑细选!擦亮双眼,拒绝杯具!
查看>>
Centos 7.1 RDO 安装 Liberty 问题及解决办法
查看>>
python制作的食物买卖存量计算程序
查看>>
yum命令——Linux下只下载不安装
查看>>
黑马程序员——集合篇
查看>>
memcached笔记
查看>>
CentOS yum安装Oracle10g
查看>>