poi动态导出excel(适合多数据)
《poi动态导出excel(适合多数据)》由会员分享,可在线阅读,更多相关《poi动态导出excel(适合多数据)(12页珍藏版)》请在装配图网上搜索。
1、整理如下.一来是将来再用时方便,二来是希望对有兴趣的人有所帮助.采用的技术是poi,相关jar包可以到apache官网找,我这里用的是3.9的版本,下载地址如下:http:/www.apache.org/dyn/closer.cgi/poi/release/bin/poi-bin-3.9-20121203.zip一.下面这个类属于封装类:ExportExcel.java:packagecom.yutian.lbs.navigation.payment.platform.util;importjava.io.IOException;importjava.io.OutputStream;impor
2、tjava.lang.reflect.Field;importjava.Iang.reflect.Method;importjava.util.Collection;importjava.util.Iterator;importjava.util.regex.Matcher;importjava.util.regex.Pattern;mons.lang3.exception.ExceptionUtils;importorg.apache.log4j.Logger;importorg.apache.poi.hssf.usermodel.HSSFCell;importorg.apache.poi.
3、hssf.usermodel.HSSFClientAnchor;importorg.apache.poi.hssf.usermodel.HSSFPatriarch;importorg.apache.poi.hssf.usermodel.HSSFRichTextString;importorg.apache.poi.hssf.usermodel.HSSFRow;importorg.apache.poi.hssf.usermodel.HSSFSheet;importorg.apache.poi.hssf.usermodel.HSSFWorkbook;*FileName:ExportExcel.ja
4、va* Description:利用开源组件POI3.0.2动态导出多个EXCEL文档!* Copyright(c)2010-Inc.AllRightsReserved.* Other:* Date:2013-10-25* ModificationRecord1:* * ModifiedDate:* Version:* Modifier:* ModificationContent* * ModificationRecord2:* version1.0* authorLiQing* param* 应用泛型,代表任意一个符合javabean风格的类* 注意这里为了简单起见,boolean型的属性x
5、xx的get器方式为getXxx(),而不是isXxx()* byte表jpg格式的图片数据*/publicclassExportExcelprivatefinalstaticLoggerlog=Logger.getLogger(ExportExcel.class);/声明一个工作薄privatestaticHSSFWorkbookworkbook=null;/生成一个表格privatestaticHSSFSheetsheet=null;/产生表格标题行privatestaticHSSFRowrow=null;/声明一个画图的顶级管理器privatestaticHSSFPatriarchpat
6、riarch=null;定义一个excel所容纳的初始数据量(防止数据过多,因为一个excel表格最多只能存65535行记录(excel2003的),所以这里取40000privatestaticIntegerinitial_data=40000;累计遍历的数量,用来判断是否超过初始数据,如果超过则新建一个sheetprivateintlength=0;publicvoidexportExcel(StringheaderName,Collectiondataset,OutputStreamout)exportExcel(headerName,null,dataset,out,yyyy-MM-d
7、d);publicvoidexportExcel(StringheaderName,Stringheaders,Collectiondataset,OutputStreamout)exportExcel(headerName,headers,dataset,out,yyyy-MM-dd);符号一定条件的数据以EXCEL的形式输出到指定10设备上* paramtitle* 表格标题名* paramheaders* 表格属性列名数组* paramdataset* 需要显示的数据集合,集合中一定要放置符合javabean风格的类的对象。此方法支持的* javabean属性的数据类型有基本数据类型及S
8、tring,Date,byte(图片数据)* paramout* 与输出设备关联的流对象,可以将EXCEL文档导出到本地文件或者网络中* parampattern* 如果有时间数据,设定输出格式。默认为yyy-MM-dd*/SuppressWarnings(unchecked)publicvoidexportExcel(Stringtitle,Stringheaders,Collectiondataset,OutputStreamout,Stringpattern)workbook=newHSSFWorkbook();sheet=workbook.createSheet(title);设置表格
9、默认列宽度为15个字节sheet.setDefaultColumnWidth(15);row=sheet.createRow(O);for(inti=0;iheaders.length;i+)HSSFCellcell=row.createCell(i);HSSFRichTextStringtext=newHSSFRichTextString(headersi);cell.setCellValue(text);patriarch=sheet.createDrawingPatriarch();/遍历集合数据,产生数据行Iteratorit=dataset.iterator();intindex=0
10、;while(it.hasNext()index+;length+;row=sheet.createRow(index);Tt=(T)it.next();性值/利用反射,根据javabean属性的先后顺序,动态调用getXxx()方法得到属Fieldfields=t.getClass().getDeclaredFields();for(inti=0;ifields.length;i+)HSSFCellcell=row.createCell(i);Fieldfield=fieldsi;StringfieldName=field.getName();StringgetMethodName=get+
11、fieldName.substring(0,1).toUpperCase()+fieldName.substring(1);tryClasstCls=t.getClass();MethodgetMethod=tCls.getMethod(getMethodName,newClass);Objectvalue=getMethod.invoke(t,newObject);/判断值的类型后进行强制类型转换StringtextValue=null;if(null!=value)if(valueinstanceofInteger)intintValue=(Integer)value;cell.setCe
12、llValue(intValue);elseif(valueinstanceofFloat)floatfValue=(Float)value;textValue=Float.toString(fValue);cell.setCellValue(textValue);elseif(valueinstanceofDouble)doubledValue=(Double)value;textValue=Double.toString(dValue);cell.setCellValue(textValue);elseif(valueinstanceofLong)longIongValue=(Long)v
13、alue;cell.setCellValue(longValue);elseif(valueinstanceofbyte)/有图片时,设置行高为60px;row.setHeightlnPoints(60);/设置图片所在列宽度为80px,注意这里单位的一个换算sheet.setColumnWidth(i,(short)(35.7*80);/sheet.autoSizeColumn(i);bytebsValue=(byte)value;HSSFClientAnchoranchor=newHSSFClientAnchor(0,0,1023,255,(short)6,index,(short)6,i
14、ndex);anchor.setAnchorType(2);patriarch.createPicture(anchor,workbook.addPicture(bsValue,HSSFWorkbook.PICTURE_TYPE_JPEG);else/其它数据类型都当作字符串简单处理textValue=value.toString();elsetextValue=;/如果不是图片数据,就利用正则表达式判断textValue是否全部由数字组成if(textValue!=null)Patternp=Ppile(A/d+(/./d+)?$);Matchermatcher=p.matcher(text
15、Value);if(matcher.matches()/是数字当作double处理cell.setCellValue(Double.parseDouble(textValue);elsenewHSSFRichTextStringrichString=HSSFRichTextString(textValue);cell.setCellValue(richString);catch(Exceptione)log.error(ExceptionUtils.getStackTrace(e);if(length%initial_data=0)sheet=workbook.createSheet(titl
16、e+length);/设置表格默认列宽度为15个字节sheet.setDefaultColumnWidth(15);row=sheet.createRow(O);for(inti=0;iheaders.length;i+)HSSFCellcell=row.createCell(i);HSSFRichTextStringtext=newHSSFRichTextString(headersi);cell.setCellValue(text);patriarch=sheet.createDrawingPatriarch();index=0;tryworkbook.write(out);catch(I
17、OExceptione)log.error(ExceptionUtils.getStackTrace(e);log.error(导出数据出错”);二下面是在本地导出的测试方法,只需调用上面这个类:publicstaticvoidmain(Stringargs0)/测试学生ExportExcelex=newExportExcel();Stringheaders=学号,”姓名,年龄,性别,”出生日期”;Listdataset=newArrayList();dataset.add(newStudent(1OOOOOO1,张三,20,true,newDate();dataset.add(newStud
18、ent(20000002,李四,24,false,newDate();dataset.add(newStudent(30000003,王五,22,true,newDate();/测试图书ExportExcelex2=newExportExcel();Stringheaders2=图书编号,”图书名称,”图书作者,”图书价格,”图书ISBN,图书出版社,封面图片”;Listdataset2=newArrayList();tryBufferedInputStreambis=newBufferedInputStream(newFileInputStream(src/test/java/com/yut
19、ian/lbs/navigation/payment/platform/test/ExportExcel/book.jpg);bytebuf=newbytebis.available();while(bis.read(buf)!=-1)/dataset2.add(newBook(1,jsp,leno,300.33f,1234567,清华出版社,buf);dataset2.add(newBook(2,java编程思想,brucl,300.33f,1234567,阳光出版社,buf);dataset2.add(newBook(3,DOM艺术,lenotang,300.33f,1234567,清华出
20、版社,buf);dataset2.add(newBook(4,c+经典,leno,400.33f,1234567,清华出版社,buf);dataset2.add(newBook(5,c#入门,leno,300.33f,1234567,汤春秀出版社,buf);OutputStreamout=newFileOutputStream(H:/a.xls);OutputStreamout2=newFileOutputStream(H:/b.xls);ex.exportExcel(dfd,headers,dataset,out);ex2.exportExcel(fdsf,headers2,dataset2,out2);out.close();JOptionPane.showMessageDialog(null,导出成功!);System.out.println(excel导出成功!”);catch(FileNotFoundExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();catch(IOExceptione)/TODOAuto-generatedcatchblocke.printStackTrace();(1)这里有个book.jpg图片,只需找个比较小的图片放在相应的目录下三,测试绝对通过,不信自己试试.
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 届高考英语复习课件:专题一-名词和冠词
- 动物微生物_第八章免疫学基础理论课件
- 届高考语文一轮教学课件文言断句和翻译
- 届高考英语一轮复习考案选修7-Unit-4课件
- 槟榔的危害课件
- 动物疾病诊疗过程-兽医学概论(动物科学专业使用)课件
- 届高考英语一轮复习考案必修2-Unit-4课件
- 发动机进气系统故障课件
- 届高考英语二轮专题复习(湖南专用)阅读简答课件
- 常见酿酒葡萄品种简绍课件
- 届高考英语高效备考复习阅读理解微技能与新题型特训13课件
- 部编版小学语文二年级上册知识总结复习ppt课件全册
- 材料成形装备及自动化课件
- 届高考英语一轮复习学通语法教学课件-第-讲-动词的时态和语态-新人教版
- 厄尔尼诺和拉尼娜ppt课件