JXL导出Excel工具类
- 将Excel中的数据读取到List<Map<String, Object>>集合中
|
package com.mvc.util;
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Field; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;
import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook;
/** * 使用jxl操作Excel的工具类 * * @author */ public
/** * 将Excel 中的数据导入到List<Map<String, Object>>中 * 2003) * * @param input * 指定excel文件输入流 * @param index 开始) * @param columnName * (注意:顺序需要保持一致) : 列名称(对应数据库中的字段) */ public // 定义文本簿 Workbook rwb = null; // 定义容器 List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); // 定义容器存储列名称 List<String> columnList = new ArrayList<String>();
try { rwb = Workbook.getWorkbook(input); if (index == null || index > rwb.getSheets().length || index < 0) { index = 0; } // 获得第一个工作表对象 Sheet sheet = rwb.getSheet(index); int int for (int Map<String, Object> map = new HashMap<String, Object>(); for (int // 表示获取第i行第j列 Cell cell = sheet.getCell(j, i); String result = cell.getContents(); // 存储列名称 if (i == 0 && columnName == null) { columnList.add(result); } else { if (columnName == null) { map.put(columnList.get(j), result); } else { map.put(columnName[j], result); } } } if (i != 0) { list.add(map); } } } catch (BiffException | IOException e) { e.printStackTrace(); return } finally { if (rwb != null) { rwb.close(); } } return }
/** * 将List集合中的对象导入到Excel文件中 * * @author * @date * @param bean * :实体类对象的ArrayList集合 * @param str * : Excel文件的路径 */ public WritableWorkbook book = null;// 编写WritableWorkbook对象,该对象代表了excel对象 try { book = Workbook.createWorkbook(new File(str));// 创建文件路径str WritableSheet sheet = book.createSheet("sheet", 0);// 获取sheet对象 // 对集合进行遍历 for (int Object ob = bean.get(i);// 集合中的对象不确定,用Object代替 // 利用反射机制 Class Field[] fi = cl.getDeclaredFields();// 获取所有属性的对象,用来获取属性 for (int fi[j].setAccessible(true);// 启用访问权限 // 获取值 Label la = new Label(j, i, String.valueOf(fi[j].get(ob))); sheet.addCell(la);// 将数据写入sheet对象中 } } book.write(); } catch (Exception e) { e.printStackTrace(); } finally { try { book.close(); } catch (Exception e) { e.printStackTrace(); } } }
/** * javaBean 转 Map * * @param object * 需要转换的javabean * @return * @throws Exception */ public Map<String, Object> map = new HashMap<String, Object>();
Class Field[] fields = cls.getDeclaredFields(); for (Field field : fields) { field.setAccessible(true); map.put(field.getName(), field.get(object)); } return }
/** * @param map * 需要转换的map * @param cls * 目标javaBean的类对象 * @return * @throws Exception */ public Object object; try { object = cls.newInstance(); for (String key : map.keySet()) { Field temFiels = cls.getDeclaredField(key); temFiels.setAccessible(true); if (temFiels.getType().toString().equals("class java.util.Date")) { temFiels.set(object, new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(map.get(key).toString())); } else { temFiels.set(object, map.get(key)); } } } catch (Exception e) { e.printStackTrace(); return } return }
public try { InputStream is = new FileInputStream("D://test.xls"); // 指定Excel的列名称 List<Map<String, Object>> list = getDataFromExcel(is, 0, new String[] { "membername", "memberid", "membercardid", "points", "operationtype", "changetime" }); // 不指定Excel的列名称 // List<Map<String, Object>> list = getDataFromExcel(is, 0, null); for (int System.out.println(list.get(i)); /** * 打印出的结果({changetime=2017-02-15 19:01:57, membercardid=2017021517585890892074, * operationtype=消费获取, membername=李白, memberid=C90B78E8AB8E4F43B27D084F285364B1, points=21}) */ } } catch (FileNotFoundException e) { e.printStackTrace(); } }
} |
JXL导出Excel工具类的更多相关文章
- 导入导出Excel工具类ExcelUtil
前言 前段时间做的分布式集成平台项目中,许多模块都用到了导入导出Excel的功能,于是决定封装一个ExcelUtil类,专门用来处理Excel的导入和导出 本项目的持久化层用的是JPA(底层用hibe ...
- javaEE开发之导出excel工具类
web开发中,一个系统的普通需求也包含导出excel,一般採用POI做统计报表导出excel. 导出excel工具类: import java.io.FileOutputStream; import ...
- Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类
Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类 ============================== ©Copyright 蕃薯耀 20 ...
- 导出Excel工具类
import java.io.OutputStream; import java.lang.reflect.Method; import java.text.SimpleDateFormat; imp ...
- java导出excel工具类
java导出excel须要使用HSSFWorkbook这个类,须要导入poi-3.6-20091214.jar 工具类调用例如以下: package com.qlwb.business.util; i ...
- Java XSSF 导出excel 工具类
参数解释: title:导出excel标题.headers 导出到excel显示的列头. columns 对应数据库字段 .list 导出数据1.pox中添加依赖 <dependency> ...
- 使用POI导出EXCEL工具类并解决导出数据量大的问题
POI导出工具类 工作中常常会遇到一些图表需要导出的功能,在这里自己写了一个工具类方便以后使用(使用POI实现). 项目依赖 <dependency> <groupId>org ...
- NPOI导入导出Excel工具类
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Ref ...
- 关于Excel导入导出POI工具类
import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import ...
随机推荐
- 超赞的lua开发工具zerobrane
zerobrane是用lua和wxWidgets编写的ide,而且是跨平台的,支持多种lua解释器,包括love2d. 而且最赞的是支持即时编程,可以在运行时直接修改变量,直接看到结果,不用重新运行, ...
- WebService或HTTP服务端接收请求转发消息到另一个服务端-实现思路
1.需求结构(WebService) A客户端<->B服务端<->C服务端 说明: a.在B服务端上面添加配置项(1.是否转发消息到C服务端:2.C服务端IP和端口): b.A ...
- IOS让返回按钮显示自定义标题而不是上个ViewController的title
在开发IOS的时候发现当从一个ViewController跳转到另一个ViewController时,被跳转到的那个ViewController的返回按钮总是显示的是上个ViewController的 ...
- SQL on Hadoop 的真相(1)
转自:http://blog.jobbole.com/86710/ 这是一组系列博文,目的是详尽介绍 SQL-on-Hadoop .本系列的第一篇会介绍 Hadoop 系统的存储引擎和在线事务处理(简 ...
- 在函数体的“出口处”,对 return 语句的正确性和效率进行检查
在函数体的“出口处”,对 return 语句的正确性和效率进行检查. 如果函数有返回值,那么函数的“出口处”是 return 语句. 我们不要轻视 return 语 句.如果 return 语句写得不 ...
- 当心文件 I/O 有错误
当心文件 I/O 有错误. #include <iostream> #include <iostream> #include <numeric> #include ...
- 【BZOJ】1492: [NOI2007]货币兑换Cash(cdq分治)
http://www.lydsy.com/JudgeOnline/problem.php?id=1492 蒟蒻来学学cdq神算法啊.. 详见论文 陈丹琦<从<Cash>谈一类分治算法 ...
- 【BZOJ】1088: [SCOI2005]扫雷Mine(递推)
http://www.lydsy.com/JudgeOnline/problem.php?id=1088 脑残去想递推去了... 对于每一个第二列的格子,考虑多种情况,然后转移.....QAQ 空间可 ...
- 【BZOJ】1042: [HAOI2008]硬币购物(dp+容斥原理)
http://www.lydsy.com/JudgeOnline/problem.php?id=1042 一开始写了个O(nv)的背包,果断tle... 看了题解,,好神..用了组合数学中的多重集合方 ...
- 转载:CSS3图标图形生成技术个人攻略
原始地址:http://segmentfault.com/a/1190000000481320 出处:http://www.zhangxinxu.com/wordpress/?p=4113