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

相关文章
|
1月前
|
缓存 安全 Java
Java并发性能优化|读写锁与互斥锁解析
本文深入解析Java中两种核心锁机制——互斥锁与读写锁,通过概念对比、代码示例及性能测试,揭示其适用场景。互斥锁适用于写多或强一致性场景,读写锁则在读多写少时显著提升并发性能。结合锁降级、公平模式等高级特性,助你编写高效稳定的并发程序。
109 0
|
1月前
|
安全 Oracle Java
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
162 0
JAVA高级开发必备·卓伊凡详细JDK、JRE、JVM与Java生态深度解析-形象比喻系统理解-优雅草卓伊凡
|
30天前
|
算法 Java 测试技术
零基础学 Java: 从语法入门到企业级项目实战的详细学习路线解析
本文为零基础学习者提供完整的Java学习路线,涵盖语法基础、面向对象编程、数据结构与算法、多线程、JVM原理、Spring框架、Spring Boot及项目实战,助你从入门到进阶,系统掌握Java编程技能,提升实战开发能力。
81 0
|
2月前
|
存储 Java Linux
操作系统层面视角下 Java IO 的演进路径及核心技术变革解析
本文从操作系统层面深入解析Java IO的演进历程,涵盖BIO、NIO、多路复用器及Netty等核心技术。分析各阶段IO模型的原理、优缺点及系统调用机制,探讨Java如何通过底层优化提升并发性能与数据处理效率,全面呈现IO技术的变革路径与发展趋势。
54 1
|
2月前
|
并行计算 Java API
Java List 集合结合 Java 17 新特性与现代开发实践的深度解析及实战指南 Java List 集合
本文深入解析Java 17中List集合的现代用法,结合函数式编程、Stream API、密封类、模式匹配等新特性,通过实操案例讲解数据处理、并行计算、响应式编程等场景下的高级应用,帮助开发者提升集合操作效率与代码质量。
129 1
|
2月前
|
安全 Java API
Java 集合高级应用与实战技巧之高效运用方法及实战案例解析
本课程深入讲解Java集合的高级应用与实战技巧,涵盖Stream API、并行处理、Optional类、现代化Map操作、不可变集合、异步处理及高级排序等核心内容,结合丰富示例,助你掌握Java集合的高效运用,提升代码质量与开发效率。
193 0
|
2月前
|
安全 JavaScript Java
java Web 项目完整案例实操指南包含从搭建到部署的详细步骤及热门长尾关键词解析的实操指南
本项目为一个完整的JavaWeb应用案例,采用Spring Boot 3、Vue 3、MySQL、Redis等最新技术栈,涵盖前后端分离架构设计、RESTful API开发、JWT安全认证、Docker容器化部署等内容,适合掌握企业级Web项目全流程开发与部署。
137 0
|
2月前
|
安全 Java
Java编程探究:深入解析final关键字
1. **使用限制**: 对于 `final` 方法和类,可以限制其他开发人员对代码的使用,确保其按设计的方式工作而不会被子类意外改变。
91 0
|
2月前
|
存储 安全 算法
Java 核心知识与技术全景解析
本文涵盖 Java 多方面核心知识,包括基础语法中重载与重写、== 与 equals 的区别,String 等类的特性及异常体系;集合类中常见数据结构、各集合实现类的特点,以及 HashMap 的底层结构和扩容机制;网络编程中 BIO、NIO、AIO 的差异;IO 流的分类及用途。 线程与并发部分详解了 ThreadLocal、悲观锁与乐观锁、synchronized 的原理及锁升级、线程池核心参数;JVM 部分涉及堆内存结构、垃圾回收算法及伊甸园等区域的细节;还包括 Lambda 表达式、反射与泛型的概念,以及 Tomcat 的优化配置。内容全面覆盖 Java 开发中的关键技术点,适用于深
|
2月前
|
缓存 安全 前端开发
Java 核心知识点与实战应用解析
我梳理的这些内容涵盖了 Java 众多核心知识点。包括 final 关键字的作用(修饰类、方法、变量的特性);重载与重写的区别;反射机制的定义、优缺点及项目中的应用(如结合自定义注解处理数据、框架底层实现)。 还涉及 String、StringBuffer、StringBuilder 的差异;常见集合类及线程安全类,ArrayList 与 LinkedList 的区别;HashMap 的实现原理、put 流程、扩容机制,以及 ConcurrentHashMap 的底层实现。 线程相关知识中,创建线程的四种方式,Runnable 与 Callable 的区别,加锁方式(synchronize

推荐镜像

更多
  • DNS