Java解析Excel文件-阿里云开发者社区

开发者社区> 技术小美> 正文

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,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
g++: error trying to exec 'cc1plus': execvp: 没有那个文件或目录
这个错误是gcc和g++版本不兼容导致的,也有可能是安装完gcc没有安装g++   首先安装gcc和g++及一些依赖包 sudo apt-get install build-essential sudo apt-get install g++   安装完成后使用 gcc -v 查看版本,...
437 0
Java解析(读取)Json数据
以前看过书上说,XML是web service间传输信息的标准格式吧,就看了看XML。最近在做个网站,又说是有了JSON,第一回听说就看了看,总结总结一下。 1.JSON介绍   JSON比XML简单,主要体现在传输相同信息的情况下,文件的大小不同。
1269 0
excel文件内容导入数据库的问题及解决
今天需要导一些数据,从excel导入到数据库中。 没有装现成的plsqldev,只能用sql*loader来弄了。 首先我把excel文件的内容转换成csv文件,以逗号分隔,在另存外excel文件的时候有那个选项。
1093 0
JAVA对XML文件的读写(有具体的代码和解析)
XML 指可扩展标记语言(EXtensible Markup Language),是独立于软件和硬件的信息传输工具,应用于 web 开发的许多方面,常用于简化数据的存储和共享。 xml指令 处理指令,简称PI (processing instruction)。
1050 0
+关注
4435
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载