下载
加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 【最新】详解JAVA POI导出EXCEL报表的操作(包括各种格式及样式的实现)

【最新】详解JAVA POI导出EXCEL报表的操作(包括各种格式及样式的实现).doc

【最新】详解JAVA POI导出EXCEL报表的操作(包括各种…

一个人的寻找之旅
2017-09-30 0人阅读 举报 0 0 暂无简介

简介:本文档为《【最新】详解JAVA POI导出EXCEL报表的操作(包括各种格式及样式的实现)doc》,可适用于综合领域

【最新】详解JAVAPOI导出EXCEL报表的操作(包括各种格式及样式的实现)这两天在做项目时最后一道工序为将查询的报表导出为EXCEL因为以前没有这方面的经验所以也在网上找了些资料走了些弯路但目前所有的问题都已解决而且自认为这个报表还是有些难度的在此我将这个复杂报表的所有代码贴出来代码的注释比较详细希望学习POI的兄弟们可以参考下建议大家把代码直接贴到JAVA工程中先跑起来这段代码会在C盘下生成一个EXCEL文件如果大家对着这个EXCEL文件来读这些代码的话应该上手比较快好了费话不多说请看代码:一、工具类***EXCEL报表工具类**authorcaoyb*version$Revision:$*publicclassExportExcel{privateHSSFWorkbookwb=privateHSSFSheetsheet=***paramwb*paramsheet*publicExportExcel(HSSFWorkbookwb,HSSFSheetsheet){super()thiswb=wbthissheet=sheet}***returnthesheet*publicHSSFSheetgetSheet(){returnsheet}***paramsheetthesheettoset*publicvoidsetSheet(HSSFSheetsheet){thissheet=sheet}***returnthewb*publicHSSFWorkbookgetWb(){returnwb}***paramwbthewbtoset*publicvoidsetWb(HSSFWorkbookwb){thiswb=wb}***创建通用EXCEL头部**paramheadString头部显示的字符*paramcolSum该报表的列数*publicvoidcreateNormalHead(StringheadString,intcolSum){HSSFRowrow=sheetcreateRow()设置第一行HSSFCellcell=rowcreateCell()rowsetHeight((short))定义单元格为字符串类型cellsetCellType(HSSFCellENCODING)cellsetCellValue(newHSSFRichTextString("南京城区各网点进件统计报表"))指定合并区域sheetaddMergedRegion(newRegion(,(short),,(short)colSum))HSSFCellStylecellStyle=wbcreateCellStyle()cellStylesetAlignment(HSSFCellStyleALIGNCENTER)指定单元格居中对齐cellStylesetVerticalAlignment(HSSFCellStyleVERTICALCENTER)指定单元格垂直居中对齐cellStylesetWrapText(true)指定单元格自动换行设置单元格字体HSSFFontfont=wbcreateFont()fontsetBoldweight(HSSFFontBOLDWEIGHTBOLD)fontsetFontName("宋体")fontsetFontHeight((short))cellStylesetFont(font)cellsetCellStyle(cellStyle)}***创建通用报表第二行**paramparams统计条件数组*paramcolSum需要合并到的列索引*publicvoidcreateNormalTwoRow(Stringparams,intcolSum){HSSFRowrow=sheetcreateRow()rowsetHeight((short))HSSFCellcell=rowcreateCell()cellsetCellType(HSSFCellENCODING)cellsetCellValue(newHSSFRichTextString("统计时间:"params"至"params))指定合并区域sheetaddMergedRegion(newRegion(,(short),,(short)colSum))HSSFCellStylecellStyle=wbcreateCellStyle()cellStylesetAlignment(HSSFCellStyleALIGNCENTER)指定单元格居中对齐cellStylesetVerticalAlignment(HSSFCellStyleVERTICALCENTER)指定单元格垂直居中对齐cellStylesetWrapText(true)指定单元格自动换行设置单元格字体HSSFFontfont=wbcreateFont()fontsetBoldweight(HSSFFontBOLDWEIGHTBOLD)fontsetFontName("宋体")fontsetFontHeight((short))cellStylesetFont(font)cellsetCellStyle(cellStyle)}***设置报表标题**paramcolumHeader标题字符串数组*publicvoidcreateColumHeader(StringcolumHeader){设置列头HSSFRowrow=sheetcreateRow()指定行高rowsetHeight((short))HSSFCellStylecellStyle=wbcreateCellStyle()cellStylesetAlignment(HSSFCellStyleALIGNCENTER)指定单元格居中对齐cellStylesetVerticalAlignment(HSSFCellStyleVERTICALCENTER)指定单元格垂直居中对齐cellStylesetWrapText(true)指定单元格自动换行单元格字体HSSFFontfont=wbcreateFont()fontsetBoldweight(HSSFFontBOLDWEIGHTBOLD)fontsetFontName("宋体")fontsetFontHeight((short))cellStylesetFont(font)*cellStylesetBorderBottom(HSSFCellStyleBORDERTHIN)设置单无格的边框为粗体cellStylesetBottomBorderColor(HSSFColorBLACKindex)设置单元格的边框颜色(cellStylesetBorderLeft(HSSFCellStyleBORDERTHIN)cellStylesetLeftBorderColor(HSSFColorBLACKindex)cellStylesetBorderRight(HSSFCellStyleBORDERTHIN)cellStylesetRightBorderColor(HSSFColorBLACKindex)cellStylesetBorderTop(HSSFCellStyleBORDERTHIN)cellStylesetTopBorderColor(HSSFColorBLACKindex)*设置单元格背景色cellStylesetFillForegroundColor(HSSFColorGREYPERCENTindex)cellStylesetFillPattern(HSSFCellStyleSOLIDFOREGROUND)HSSFCellcell=for(inti=i<columHeaderlengthi){cell=rowcreateCell(i)cellsetCellType(HSSFCellENCODING)cellsetCellStyle(cellStyle)cellsetCellValue(newHSSFRichTextString(columHeaderi))}}***创建内容单元格**paramwbHSSFWorkbook*paramrowHSSFRow*paramcolshort型的列索引*paramalign对齐方式*paramval列值*publicvoidcteateCell(HSSFWorkbookwb,HSSFRowrow,intcol,shortalign,Stringval){HSSFCellcell=rowcreateCell(col)cellsetCellType(HSSFCellENCODING)cellsetCellValue(newHSSFRichTextString(val))HSSFCellStylecellstyle=wbcreateCellStyle()cellstylesetAlignment(align)cellsetCellStyle(cellstyle)}***创建合计行*paramcolSum需要合并到的列索引*paramcellValue*publicvoidcreateLastSumRow(intcolSum,StringcellValue){HSSFCellStylecellStyle=wbcreateCellStyle()cellStylesetAlignment(HSSFCellStyleALIGNCENTER)指定单元格居中对齐cellStylesetVerticalAlignment(HSSFCellStyleVERTICALCENTER)指定单元格垂直居中对齐cellStylesetWrapText(true)指定单元格自动换行单元格字体HSSFFontfont=wbcreateFont()fontsetBoldweight(HSSFFontBOLDWEIGHTBOLD)fontsetFontName("宋体")fontsetFontHeight((short))cellStylesetFont(font)HSSFRowlastRow=sheetcreateRow((short)(sheetgetLastRowNum()))HSSFCellsumCell=lastRowcreateCell()sumCellsetCellValue(newHSSFRichTextString("合计"))sumCellsetCellStyle(cellStyle)sheetaddMergedRegion(newRegion(sheetgetLastRowNum(),(short),sheetgetLastRowNum(),(short)colSum))指定合并区域for(inti=i<(cellValuelength)i){sumCell=lastRowcreateCell(i)sumCellsetCellStyle(cellStyle)sumCellsetCellValue(newHSSFRichTextString(cellValuei))}}***输入EXCEL文件**paramfileName文件名*publicvoidoutputExcel(StringfileName){FileOutputStreamfos=try{fos=newFileOutputStream(newFile(fileName))wbwrite(fos)fosclose()}catch(FileNotFoundExceptione){eprintStackTrace()}catch(IOExceptione){eprintStackTrace()}}}二、创建EXCEL报表的客户端***拒绝件报表生成类**authorcaoyb*version$Revision:$*publicclassComplexExportExcelClient{privatestaticHSSFWorkbookwb=newHSSFWorkbook()privatestaticHSSFSheetsheet=wbcreateSheet()publicstaticvoidmain(Stringargs){ExportExcelexportExcel=newExportExcel(wb,sheet)创建列标头LISTListfialList=newArrayList()fialListadd("申请人未提供任何联系方式")fialListadd("无工作单位信息且未提供收入来源信息")fialListadd("有工作单位但未提供单位地址或电话")fialListadd("家庭地址缺失")fialListadd("客户身份证明资料缺")fialListadd("签名缺失或签名不符合要求")fialListadd("其它")ListerrorList=newArrayList()errorListadd("客户主动取消")errorListadd("个人征信不良")errorListadd("欺诈申请")errorListadd("申请人基本条件不符")errorListadd("申请材料不合规")errorListadd("无法正常完成征信")errorListadd("重复申请")errorListadd("其他")计算该报表的列数intnumber=fialListsize()*errorListsize()*给工作表列定义列宽(实际应用自己更改列数)for(inti=i<numberi){sheetsetColumnWidth(i,)}创建单元格样式HSSFCellStylecellStyle=wbcreateCellStyle()指定单元格居中对齐cellStylesetAlignment(HSSFCellStyleALIGNCENTER)指定单元格垂直居中对齐cellStylesetVerticalAlignment(HSSFCellStyleVERTICALCENTER)指定当单元格内容显示不下时自动换行cellStylesetWrapText(true)设置单元格字体HSSFFontfont=wbcreateFont()fontsetBoldweight(HSSFFontBOLDWEIGHTBOLD)fontsetFontName("宋体")fontsetFontHeight((short))cellStylesetFont(font)创建报表头部exportExcelcreateNormalHead("南京地区申请资料拒件分析统计",number)设置第二行Stringparams=newString{"年月日","年月日"}exportExcelcreateNormalTwoRow(params,number)设置列头HSSFRowrow=sheetcreateRow()HSSFCellcell=rowcreateCell()cellsetCellStyle(cellStyle)cellsetCellValue(newHSSFRichTextString("机构代码"))HSSFCellcell=rowcreateCell()cellsetCellStyle(cellStyle)cellsetCellValue(newHSSFRichTextString("支行名称"))HSSFCellcell=rowcreateCell()cellsetCellStyle(cellStyle)cellsetCellValue(newHSSFRichTextString("无效件"))HSSFCellcell=rowcreateCell(*fialListsize())cellsetCellStyle(cellStyle)cellsetCellValue(newHSSFRichTextString("拒绝件"))HSSFRowrow=sheetcreateRow()设置行高rowsetHeight((short))HSSFCellrowCell=intm=intn=创建不同的LIST的列标题for(inti=i<numberi=i){if(i<*fialListsize()){rowCell=rowcreateCell(i)rowCellsetCellStyle(cellStyle)rowCellsetCellValue(newHSSFRichTextString(fialListget(m)toString()))m}else{rowCell=rowcreateCell(i)rowCellsetCellStyle(cellStyle)rowCellsetCellValue(newHSSFRichTextString(errorListget(n)toString()))n}}创建最后一列的合计列rowCell=rowcreateCell(number)rowCellsetCellStyle(cellStyle)rowCellsetCellValue(newHSSFRichTextString("合计"))合并单元格HSSFRowrow=sheetcreateRow()合并第三行到第五行的第一列sheetaddMergedRegion(newRegion(,(short),,(short)))合并第三行到第五行的第二列sheetaddMergedRegion(newRegion(,(short),,(short)))合并第三行的第三列到第AA指定的列intaa=*fialListsize()sheetaddMergedRegion(newRegion(,(short),,(short)aa))intstart=aasheetaddMergedRegion(newRegion(,(short)start,,(short)(number)))循环合并第四行的行并且是每列合并成一列for(inti=i<numberi=i){sheetaddMergedRegion(newRegion(,(short)i,,(short)(i)))}根据列数奇偶数的不同创建不同的列标题for(inti=i<numberi){if(i<*fialListsize()){if(i==){HSSFCellcell=rowcreateCell(i)cellsetCellStyle(cellStyle)cellsetCellValue(newHSSFRichTextString("无效量"))}else{HSSFCellcell=rowcreateCell(i)cellsetCellStyle(cellStyle)cellsetCellValue(newHSSFRichTextString("占比"))}}else{if(i==){HSSFCellcell=rowcreateCell(i)cellsetCellStyle(cellStyle)cellsetCellValue(newHSSFRichTextString("拒绝量"))}else{HSSFCellcell=rowcreateCell(i)cellsetCellStyle(cellStyle)cellsetCellValue(newHSSFRichTextString("占比"))}}}循环创建中间的单元格的各项的值for(inti=i<numberi){HSSFRowrow=sheetcreateRow((short)i)for(intj=j<=numberj){exportExcelcteateCell(wb,row,(short)j,HSSFCellStyleALIGNCENTERSELECTION,StringvalueOf(j))}}创建最后一行的合计行StringcellValue=newStringnumberfor(inti=i<numberi){cellValuei=StringvalueOf(i)}exportExcelcreateLastSumRow(,cellValue)exportExceloutputExcel("c:拒绝件统计xls")}}

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/16

【最新】详解JAVA POI导出EXCEL报表的操作(包括各种格式及样式的实现)

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利