poi动态导出excel(适合多数据)

上传人:小** 文档编号:76166916 上传时间:2022-04-17 格式:DOC 页数:12 大小:98.50KB
收藏 版权申诉 举报 下载
poi动态导出excel(适合多数据)_第1页
第1页 / 共12页
poi动态导出excel(适合多数据)_第2页
第2页 / 共12页
poi动态导出excel(适合多数据)_第3页
第3页 / 共12页
资源描述:

《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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!