- 浏览: 2870409 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (1173)
- 名言警句 (5)
- 心情随笔 (50)
- 数据库 (57)
- Java基础 (241)
- J2EE框架 (91)
- 数据结构 (12)
- 程序设计 (21)
- WEB技术 (128)
- 网络日志 (12)
- IT资讯 (247)
- linux (64)
- solaris (2)
- 其它 (143)
- WebService (4)
- 日语学习 (2)
- 机器人 (5)
- Android (5)
- cgywin (3)
- Game (1)
- DWR (1)
- spring (8)
- canvas (1)
- Guava (3)
- Modbus (5)
- 测试 (6)
- mongodb (9)
- Quartz (2)
- Cron (1)
- windows (2)
- 持续集成 (1)
- bootstrap (3)
- 结对编程 (1)
- nodejs (1)
- Netty (1)
- 安全 (3)
- webstorm (2)
- sparkline (1)
- Job (1)
- git (3)
- Maven (3)
- knockout (5)
- jquery (1)
- bower (1)
- docker (1)
- confluence (4)
- wiki (1)
- GoogleMap (1)
- jekyll (10)
- ruby (2)
- npm (3)
- browserify (1)
- gulp (3)
- openwrt (1)
- discuz (3)
- 输入法 (1)
- JPA (1)
- eclipse (2)
- IntelliJ (1)
- css (1)
- 虚拟机 (1)
- 操作系统 (1)
- azkaban (2)
- scrum (1)
最新评论
-
pangxiea_:
你好, 想请问一下 Linux下 这么使用rxtxcomm 在 ...
使用Java进行串口通信 -
abababudei:
请教一下,这个您是怎么解决的:/dev/ttyS2enteri ...
Java应用程序的MODBUS通讯 -
xuniverse:
hannibal005 写道楼主,我问下 request.se ...
用javascript与java进行RSA加密与解密 -
atxkm:
找了一下午,终于找到了
gulp 拷贝文件时如何移除文件目录结构 -
kalogen:
gtczr 写道非常感谢,经过我自己的修改,已经完美实现。发出 ...
用javascript与java进行RSA加密与解密
import java.io.FileInputStream; import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.Properties; import org.apache.commons.beanutils.BeanUtils; import org.apache.log4j.Logger; 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 com.tarena.crm.entity.CustomerProxy; public class ExcelToCollectionUtil { /** * Logger for this class */ private static final Logger logger = Logger .getLogger(ExcelToCollectionUtil.class); /** * Excel和对象成员的映射集合. */ private Properties pro; /** * Excel封装对象. */ private HSSFWorkbook hb; /** * 坏数据静态异常类. */ public static class ExcelBadRecordException extends Exception{ private StringBuilder ms=new StringBuilder(); private boolean flag=false; public void addMessage(String s){ flag=true; ms.append(s+"\n"); } public ExcelBadRecordException(){ super(); } @Override public String getMessage() { return ms.toString(); } public boolean hasError(){ return flag; } } private ExcelBadRecordException exception=new ExcelBadRecordException(); /** * 集合中所存储的对象类型. */ private Class clazz; public ExcelToCollectionUtil(Properties pro, HSSFWorkbook hb, Class clazz) { super(); this.pro = pro; this.hb = hb; this.clazz = clazz; } /** * 从Excel导入到Collection */ public Collection toCollection() { Collection table=new ArrayList(); //保存数据的集合 HSSFSheet sheet = hb.getSheetAt(0); //得到第一个sheet , 应该改进成可以选择的. HSSFRow head = sheet.getRow(0); //得到第一行表头 for (int i = 1;; i++) { HSSFRow row = sheet.getRow(i); //得到一行记录 if(row==null) //判断是否为最后记录, 应该判断记录是否有效. break; Object object=null; try { object = this.exchangObjectFromRow(head, row); //通过一条记录产生一个对象 } catch (Exception e) { //遇到无效的数据跳过 Exception ee=new Exception("第"+i+"条记录格式有错误!",e); exception.addMessage(ee.getMessage()); //将无效记录异常内容存在ExcelBadRecordException对象里 continue; } table.add(object); //将产生的对象存入集合中 } return table; } /** * 抛出无效数据异常. * @throws ExcelBadRecordException */ public void showException() throws ExcelBadRecordException{ if(exception.hasError()){ throw exception; } } /** * 将一个row对象数据转换成javabean对象. * @param head * @param row * @return * @throws InvocationTargetException * @throws IllegalAccessException */ private Object exchangObjectFromRow(HSSFRow head,HSSFRow row) throws Exception{ StringBuilder sb = new StringBuilder(); Object object=this.newInstance(clazz); if(row.getCell((short)0)==null){ throw new Exception("第一列单元格没有数据."); } for (int j = 0;; j++) { HSSFCell cell = row.getCell((short) j); //得到一个单元格. if (cell == null) break; String attribute=head.getCell((short)j).getRichStringCellValue().getString(); // 得到Excel中该列列名. String property=pro.getProperty(attribute); // 从Properties中得到对应的成员名 Object value=null; //成员对象 if(property==null||property.equals("")||attribute.equals("")) //防止有没有对应的字段映射 continue; switch (cell.getCellType()) { // 判断单元格的数据类型,做不同处理. case HSSFCell.CELL_TYPE_STRING: //判断是字符串类型 value=cell.getRichStringCellValue().getString(); // 得到对象的成员对象. break; case HSSFCell.CELL_TYPE_NUMERIC: //判断是数字类型 if(HSSFDateUtil.isCellDateFormatted(cell)){ //判断是标准日期类型(1996-1-1) value=cell.getDateCellValue(); // 得到对象的成员对象. }else{ value=new Double(cell.getNumericCellValue()).longValue(); } break; default: logger.error("excel里非字符串和数字的类型."); } sb.append(property+"="+value); sb.append(" "); BeanUtils.setProperty(object,property,value); } if (logger.isDebugEnabled()) { //logger.debug(clazz.getSimpleName()+"[" + sb.toString() + "]"); logger.debug(BeanUtils.describe(object)); } return object; } /** * 创建对象. * @param clazz * @return */ private Object newInstance(Class clazz){ try{ return clazz.newInstance(); }catch(Exception e){ logger.error(e.getMessage()); } return null; } public static void main(String[] args) throws Exception { HSSFWorkbook book = new HSSFWorkbook(new FileInputStream("e:\\project\\test.xls")); Properties pro=new Properties(); pro.load(ExcelToCollectionUtil.class.getClassLoader().getResourceAsStream("CustomerProxy.properties")); ExcelToCollectionUtil util = new ExcelToCollectionUtil(pro, book, CustomerProxy.class); Collection col=util.toCollection(); Iterator it=col.iterator(); while(it.hasNext()){ CustomerProxy con=(CustomerProxy) it.next(); System.out.println(con.getName()+" "+con.getValidStateString()+" "+con.getGradeString()+" "+con.getRegisterConsultantString()); } util.showException(); } }
评论
4 楼
sunxboy
2014-09-10
用的apache poi 包
3 楼
u010100704
2014-09-03
晕死!
2 楼
gaoyue999
2009-12-21
给的类也不全,郁闷。
1 楼
gaoyue999
2009-12-21
用到了什么jar包也说一下好不,要不怎么查。。
发表评论
-
高级Java程序员值得拥有的10本书
2015-05-04 07:24 810Java是时下最流行的编程语言之一。市面上也出现了适合初学者 ... -
深入理解java异常处理机制
2015-01-30 09:30 13271. 引子 try…catch…fi ... -
java 运行时参数设置
2015-01-07 09:13 865JVM的运行时参数: -Xms为执行单元内存的1/4, ... -
每个Java开发者都应该知道的5个JDK工具
2014-12-29 12:37 1139JDK是Java语言的软件开 ... -
使用双重锁判定可以大幅降低锁的征用
2014-12-29 12:30 746class ObjInstance { //单例 pri ... -
MAVEN Scope使用说明
2014-11-24 09:40 758在Maven的依赖管理中,经常会用到依赖的scope设置。这 ... -
Spring4 quartz job xml configuration
2014-11-11 09:46 14371. 定义job details public ... -
Add items into list in one line using guava
2014-11-10 10:54 721//@formatter:off fina ... -
配置动态读取(变化)文件 in Spring
2014-11-10 08:51 13231. 从环境变量中读取路径: <bean id=&q ... -
JAVA实现AES加密与解密
2014-11-04 15:34 659package com.eifesun.monitor.up ... -
Netty4.x分析
2014-07-31 11:06 1461官网定义: netty是一个异步、事件驱动的网络应用框架,用 ... -
Ways to sort lists of objects in Java based on multiple fields
2014-07-21 17:19 7731. the first way: Sorting wit ... -
how to parse a String to BigDecimal
2014-07-21 10:08 918private BigDecimal parsePrice( ... -
order list using google guava
2014-07-21 09:08 884Predicate<String> filter ... -
Java 读文件操作
2014-07-08 14:09 8861. only use java core, no exte ... -
怎样使Java 中测试按一定顺序执行
2014-03-10 11:27 1318@FixMethodOrder(MethodSorters. ... -
如何实现在当类初始化时,自动调动某个方法
2014-02-14 14:44 964有两种思路, 1. 将这个类实现为thread类 (or ... -
持续集成JenkinsAPI常见用法
2014-02-10 13:54 43jenkins(持续集成开源工具)提供了丰富的api接口,基 ... -
Sonar 安装与使用
2014-01-13 10:49 1730Sonar 是一个用于代码质量管理的开放平台。通过插件机制, ... -
源代码管理分析工具 Source Navigator的安装与使用
2014-01-13 09:51 1893Source-Navigator是原来redhat开发的一个 ...
相关推荐
标题 "开博第一篇:一个Excel转换Java集合的工具类" 涉及到的核心知识点是将Excel数据转换为Java集合对象,这是在处理大量数据导入导出时常见的需求。这个工具类的主要功能可能是解析Excel文件,将其内容映射到Java...
本实例提供了一个通用工具类,能够处理多种不同类型的对象集合,实现了最大化的通用性,使得开发者可以灵活地将各种业务数据转化为易于查看和分析的Excel格式。 首先,我们需要了解Java中处理Excel文件的库,如...
工具类通常会有一个方法,接受一个 List 对象,然后遍历Excel的每一行,对每行数据调用之前提到的对象赋值逻辑。 5. **指定坐标的赋值**: - 这种功能可能用于处理复杂的情况,比如数据不按常规的列对应方式排列,...
* 导出excel(利用反射机制) * String[] title = {"订单号","商品名称","商品价格","创建时间"}; * String[] field = {"orderNum","productName","productPrice","createTime"}; * ExportTools.export("sellJoin...
综上所述,"Excel列表转化成java对象"是一个涉及文件读取、数据解析、对象映射和集合操作的综合过程。Java提供了丰富的库和工具,如Apache POI、OpenCSV和JAXB,来支持这一过程,使得在Java应用中处理Excel和CSV数据...
导入Excel数据通常涉及到读取Excel文件并将其内容转换为程序可以处理的数据结构,如Java集合或数据库记录。使用Apache POI,你可以创建`Workbook`对象来代表整个Excel文件,然后通过`Sheet`对象访问工作表,再用`...
这个"Excel工具类.zip"文件包含了一个完整的解决方案,用于在本地和服务器环境中导出Excel文件,同时还提供了测试用的jar包,确保了功能的可行性。 首先,让我们详细了解一下Excel工具类的主要功能和原理。在Java...
标题“poi excel转换成bean”涉及到的关键技术是使用Apache POI从Excel文件中读取数据并将其映射到Java Bean对象中。这个过程在处理大量结构化数据时特别有用,例如导入数据库或进行数据分析。 首先,我们需要理解...
本文将详细解析"java开发常用工具类"中的关键知识点,包括日历、时间处理、Excel导出、网络请求、流操作、数据处理、数值计算以及XML和Web工具类。 1. **日历和时间处理**: Java中`java.util.Calendar`和`java....
本主题聚焦于一个名为"Excel数据导入、导出工具类"的源码,它利用了Java的反射机制来实现高效且灵活的功能。以下是关于这个工具类及其核心知识点的详细解释。 首先,我们需要理解什么是反射。在Java中,反射是一种...
"导出实体list集合的工具类"是一个非常实用的编程工具,它简化了从Java程序中导出List对象到外部文件的过程。这个工具类可能包含了多个方法,用于处理不同类型的数据导出需求,如Excel表格、CSV文件等。 在提供的...
4. 工具类编写:在编写工具类时,需要使用 Java 反射机制将 Excel 文件中的数据解析成对象集合实例。 5. 反射机制在 Java 中的应用:反射机制在 Java 中有广泛的应用,例如将 Excel 文件中的数据解析成对象集合实例...
使用这个工具时,通常会有一个示例代码或者教程,展示如何初始化、读取Excel、创建Java对象、写入Excel等基本操作。 总结来说,"java通用的导入导出excel工具"利用Java反射机制和Apache POI库实现了对Excel文件的...
Java工具类是Java编程中非常重要的组成部分,它们提供了一系列便捷的方法,帮助开发者高效地处理各种常见任务。在Java中,工具类通常是静态方法的集合,无需实例化对象就能直接调用,大大提高了代码的可读性和实用性...
- Apache POI:这是一个流行的Java API,用于读写Microsoft Office格式的文件,包括Excel。主要类有`XSSFWorkbook`(用于创建.xlsx文件)和`HSSFWorkbook`(用于创建.xls文件)。 - OpenCSV:虽然主要处理CSV文件...
"java开发常用工具类包.zip"就是一个这样的资源集合,包含了一系列实用的工具类,便于开发人员在项目中快速集成和使用。下面将详细阐述这个压缩包中的主要知识点。 1. **AES加解密工具类**: AES(Advanced ...
标题中的"导出实体集合工具类2.rar"表明这是一个用于导出实体类集合的Java工具类库,可能是一个便于开发者快速实现数据导出功能的组件。这类工具通常简化了将数据库中的实体对象转换为可下载的Excel或其他表格格式的...
本文将详细介绍如何使用`jxl`库创建一个导出Excel的工具类,以及这个工具类如何帮助我们简化代码,提高效率。 首先,`jxl`库提供了对Excel文件的读写支持,包括工作簿(Workbook)、工作表(Worksheet)、行(Row)...