package com.hynt.project.util.excel; import java.io.FileOutputStream; import java.util.List; import java.util.Map; 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; import org.apache.poi.ss.util.Region; public class ExcelServiceImpl implements ExcelService { private int rowSize; public int getRowSize() { return rowSize; } public void setRowSize(int rowSize) { this.rowSize = rowSize; } public void toExcel(Map<String, Object> data) throws Exception { String title = (String)data.get("title"); String[] headers = (String[])data.get("headers"); List<Object[]> rows = (List<Object[]>)data.get("rows"); String filePath = (String)data.get("filePath"); String sheetName = (String)data.get("sheetName"); // 第一步,创建一个webbook,对应一个Excel文件 HSSFWorkbook wb = new HSSFWorkbook(); // 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet HSSFSheet sheet = null; int index = 1;//工作表序号 HSSFRow row = null;//工作表行 HSSFCell cell = null;//工作表列 int rowIndex = 0;//工作表行号 Object[] rowdata = null;//数据行 for(int i=0;i<rows.size();i++){ if(i%rowSize == 0){ sheet = wb.createSheet(sheetName +"_"+ (index++)); rowIndex = 0; } if(rowIndex == 0){//创建标题 row = sheet.createRow(rowIndex); cell = row.createCell(0); cell.setCellValue(title); sheet.addMergedRegion(new Region(0, (short)0, 0, (short)(headers.length-1))); rowIndex ++ ; } if(rowIndex == 1){//创建列名 row = sheet.createRow(rowIndex); for(int j=0;j<headers.length;j++){ cell = row.createCell(j); cell.setCellValue(headers[j]); } rowIndex ++ ; } //写入数据行 rowdata = rows.get(i); row = sheet.createRow(rowIndex); for(int k = 0;k<rowdata.length;k++){ cell = row.createCell(k); cell.setCellValue((String)rowdata[k]); } rowIndex++ ; } // 最后,将文件存到指定位置 try { FileOutputStream fout = new FileOutputStream(filePath); wb.write(fout); fout.close(); } catch (Exception e) { e.printStackTrace(); } } }
测试:
public void toExcel(ServletContextEvent event){ Map<String,Object> data = new HashMap<String, Object>(); data.put("title", "学生基本信息表"); data.put("headers", new String[]{"学号","姓名","班级","自我介绍","性别","爱好","备注"}); data.put("filePath", "d:\\stu.xls"); data.put("sheetName", "学生"); List<Object[]> rows = new ArrayList<Object[]>(); Object[] row = null; for(int i = 0;i<200000;i++){ row = new Object[7]; row[0] = new String("1000"+i); row[1] = new String("蓉"+i); row[2] = new String("就发飞机分付金额飞机二纺机二姐夫金额付金额分付金额付金额"+i); row[3] = new String("飞机分块减肥额咖啡金额咖啡机额看风景而非吉尔克分进风口付金额客服吉尔克复健科佳蓉"+i); row[4] = new String("菲菲将飞机飞额看风景额咖啡金额咖啡机额看风景额看风景儿科付金额客服就额客服戒咖啡将额看风景额看风景儿科付金额开付金额开付金额佳蓉"+i); row[5] = new String("汤风景妇科飞机额看风景儿科付金额客服额块减肥额块减肥额块减肥儿科监控 蓉"+i); row[6] = new String("阿飞affect分解符科技法额付金额咖啡金额疯狂饥饿疯狂饥饿付金额开付金额看飞机额咖啡金额咖啡机额咖啡金额咖啡机额客服额块减肥额看风景佳蓉"+i); rows.add(row); } data.put("rows", rows); WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(event.getServletContext()); ExcelService excelService = (ExcelService)ctx.getBean("excelService"); try { excelService.toExcel(data); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println("excel导出失败!"); } }
相关推荐
java使用POI导出 Excel+图片工具类 ,里面含有poi jar包,只调用接口即可直接保存Excel。使用的时候需先把数据封装,具体包装需根据实际导出数据进行处理。文件demo中只提供包装格式。
利用POI实现Java导出Excel表格,为了实现以后通用,做成了一个利用Java的反射机制做成的万金油式工具类,只需要给工具类传入固定的几个参数(映射字段的map集合,数据集合,实体类的Claas等),就可以实现导出Excel,该...
通用类的Java导出Excel方法,导出内容是使用json传递,字段描述使用ArrayList数组传递,
利用poi导入导出Excel xls,xlsx
SpringBoot整合poi实现Excel文件的导入和导出,其中单独分装出一个ExcelFormatUtil工具类来实现对单元格数据格式进行判断。
主要介绍了SpringBoot整合POI导出通用Excel的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
ExportExcel类为导出Excel报表通用类。 1.将源代码导入eclipse中 2.部署项目,启动tomcat服务器 3.web页面具体路径:http://localhost:80/poi 4.点击Read excel 2003 or 2007,可以读取2003或2007版Excel 5.点击...
一个excel导入/导出的demo 用到Apache的poi相关接口。 利用注解及反射实现。 在建立pojo时利用自定义的@Excel注解来映射excel列名。
* 这是一个通用的方法,利用了JAVA的反射机制,可以将放置在JAVA集合中并且符号一定条件的数据以EXCEL 的形式输出到指定IO设备上 * * @param title * 表格标题名 * @param headers * 表格属性列名数组 ...
通用的POI导入导出Excel通用解决方案,
Java使用poi实现excel导入导出,导入导出已做成通用方法,内附说明文档
poi通过反射,泛型,注解来实现通用的poi导出导入公共类。
java使用poi.jar操作excel导入导出数据,导出可以通用,导入如果要做到通用,稍加改动一下就可以了。 导入导出各有一个demo。
封装 poi,使用实体的列表(List),可以使用实体属性(一个String数组)指定生成的列,可以指定文件标题,列标题,生成excel,并在页面进行导出
在项目中,经常免不了要导入、导出Excel,导出Excel稍微简单点,制作一张模板,然后将查询之后的数据写入到模板中即可,导出程序可以做到一次写好,基本上就可以通用。 但导入Excel相对麻烦点,一般情况下,导入的...
spring boot+mybatis plus+easy poi实现数据库导出成excel和excel导入到数据库
Java导出excel工具详细介绍(POI 和 EasyExcel),各种复杂需求情况的导出,代码拿来即可运行,各种情况的例子以及通用工具类都在里面,主要内容如下: 1. 第一部门:详细介绍POI使用以及完成各种复杂的Excel的导出...
java poi 实现excel的导入与导出,使用java反射获取类,通用导入与导出适合二次开发的一个大型项目框架
ExportExcel类为导出Excel报表通用类。 1.将源代码导入eclipse中 2.部署项目,启动tomcat服务器 3.web页面具体路径:http://localhost:80/poi 4.点击Read excel 2003 or 2007,可以读取2003或2007版Excel 5....