当前位置: 代码迷 >> 报表 >> Java使用POI实现数据导出excel表格
  详细解决方案

Java使用POI实现数据导出excel表格

热度:249   发布时间:2016-05-05 07:31:06.0
Java使用POI实现数据导出excel报表

??在上篇文章中,我们简单介绍了java读取word,excel和pdf文档内容?,但在实际开发中,我们用到最多的是把数据库中数据导出excel报表形式。不仅仅简单的读取office中的数据.尤其是在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作。而数据导出的格式一般是EXCEL或者PDF?。所以今天我们来简单看一下利用Apache??POI实现数据库中数据导出excel报表。在java中有很多实现数据导出excel报表的第三方jar包。但在比较了一下感觉还是POI相对来说比较好用。如果大家想学习其他的导出方式可以自行研究一下。

?

首先来了解一下?Apache?POI

?

?????Apache?POI?是用Java编写的免费开源的跨平台的?Java?APIApache?POI提供APIJava程式对Microsoft?Office格式档案读和写的功能。Apache?POI?是创建和维护操作各种符合Office?Open?XMLOOXML)标准和微软的OLE?2复合文档格式(OLE2)的Java?API。用它可以使用Java读取和创建,修改MS?Excel文件.而且,还可以使用Java读取和创建MS?WordMSPowerPoint文件。Apache?POI?提供Java操作Excel解决方案(适用于Excel97-2008)。?下面我们来看一下Apache?POI?中提供的几大部分的作用:

?

?

HSSF?-?提供读写Microsoft?Excel?XLS格式档案的功能。  

XSSF?-?提供读写Microsoft?Excel?OOXML?XLSX格式档案的功能。  

HWPF?-?提供读写Microsoft?Word?DOC格式档案的功能。  

HSLF?-?提供读写Microsoft?PowerPoint格式档案的功能。  

HDGF?-?提供读Microsoft?Visio格式档案的功能。  

HPBF?-?提供读Microsoft?Publisher格式档案的功能。  

HSMF?-?提供读Microsoft?Outlook格式档案的功能。?

?

? ? ? ?本节我们所要学习的是POIexcel的操作。所以我们只需用到HSSF?这部分内容就可以了。其他的请大家自行研究吧。哈哈。

?

?

下面我们就一步一步的来看一下如何创建一个excel报表:

?

1.?创建新的Excel工作薄

?

HSSFWorkbook?workbook?=?new?HSSFWorkbook();

Excel工作簿中建一工作表,其名为缺省值。POI中还提供了其他的一些其他的workbook?构造方法。下面我们来看一下:

Java使用POI实现数据导出excel报表_www.fengfly.com

?

?

2.创建一个工作表

如要新建一名为"工资表"的工作表,其语句为:  

HSSFSheet?sheet?=?workbook.createSheet("工资表");?

?

3.创建行

?在索引0的位置创建行(最顶端的行)  

HSSFRow?row?=?sheet.createRow(0);

 

4.创建单元格

在索引0的位置创建单元格(左上端)  

HSSFCell?cell?=?row.createCell((short)?0);

定义单元格为字符串类型,这个字符串类型也可在创建单元格里面设置。

cell.setCellType(HSSFCell.CELL_TYPE_STRING);?

在单元格中输入一些内容  

cell.setCellValue("增加值");?

?

5.新建一输出文件流把相应的Excel工作簿?输出到本地

FileOutputStream?fOut?=?new?FileOutputStream(outputFile);

workbook.write(fOut);

fOut.flush();

操作结束,关闭文件  

fOut.close();?

?

??????OK,在给单元格设置下从数据库中读取的数据。这样我们就可以把数据库里面的内容导入到excel了。当然这里我们只是简单的介绍了一些POI的用法。并没有细讲,比如设置单元格里面数据的格式。单元格的一些属性设置。这些将会在我下面的例子中用到。也算是给大家一些示例吧。好了。最后看一个实例吧:

?

EXCEL报表工具类:ExportExcel.java

?

  1. package?com.bzu.search.action; ?
  2. ?
  3. import?java.io.File; ?
  4. import?java.io.FileNotFoundException; ?
  5. import?java.io.FileOutputStream; ?
  6. import?java.io.IOException; ?
  7. ?
  8. import?org.apache.poi.hssf.usermodel.HSSFCell; ?
  9. import?org.apache.poi.hssf.usermodel.HSSFCellStyle; ?
  10. import?org.apache.poi.hssf.usermodel.HSSFFont; ?
  11. import?org.apache.poi.hssf.usermodel.HSSFRichTextString; ?
  12. import?org.apache.poi.hssf.usermodel.HSSFRow; ?
  13. import?org.apache.poi.hssf.usermodel.HSSFSheet; ?
  14. import?org.apache.poi.hssf.usermodel.HSSFWorkbook; ?
  15. import?org.apache.poi.hssf.util.HSSFColor; ?
  16. import?org.apache.poi.hssf.util.Region; ?
  17. ?
  18. /** ?
  19. ?*?EXCEL报表工具类. ?
  20. ?*? ?
  21. [email protected] ?
  22. [email protected]$Revision:$ ?
  23. ?*/?
  24. public?class?ExportExcel?{ ?
  25. ?
  26. ????private?HSSFWorkbook?wb?=?null; ?
  27. ?
  28. ????private?HSSFSheet?sheet?=?null; ?
  29. ?
  30. ????/** ?
  31. [email protected] ?
  32. [email protected] ?
  33. ?????*/?
  34. ????public?ExportExcel(HSSFWorkbook?wb,?HSSFSheet?sheet)?{ ?
  35. ????????super(); ?
  36. ????????this.wb?=?wb; ?
  37. ????????this.sheet?=?sheet; ?
  38. ????} ?
  39. ?
  40. ????/** ?
  41. [email protected] ?
  42. ?????*/?
  43. ????public?HSSFSheet?getSheet()?{ ?
  44. ????????return?sheet; ?
  45. ????} ?
  46. ?
  47. ????/** ?
  48. [email protected] ?
  49. ?????*????????????the?sheet?to?set ?
  50. ?????*/?
  51. ????public?void?setSheet(HSSFSheet?sheet)?{ ?
  52. ????????this.sheet?=?sheet; ?
  53. ????} ?
  54. ?
  55. ????/** ?
  56. [email protected] ?
  57. ?????*/?
  58. ????public?HSSFWorkbook?getWb()?{ ?
  59. ????????return?wb; ?
  60. ????} ?
  61. ?
  62. ????/** ?
  63. [email protected] ?
  64. ?????*????????????the?wb?to?set ?
  65. ?????*/?
  66. ????public?void?setWb(HSSFWorkbook?wb)?{ ?
  67. ????????this.wb?=?wb; ?
  68. ????} ?
  69. ?
  70. ????/** ?
  71. ?????*?创建通用EXCEL头部 ?
  72. ?????*? ?
  73. [email protected] ?
  74. ?????*????????????头部显示的字符 ?
  75. [email protected] ?
  76. ?????*????????????该报表的列数 ?
  77. ?????*/?
  78. ????public?void?createNormalHead(String?headString,?int?colSum)?{ ?
  79. ?
  80. ????????HSSFRow?row?=?sheet.createRow(0); ?
  81. ?
  82. ????????//?设置第一行 ?
  83. ????????HSSFCell?cell?=?row.createCell(0); ?
  84. ????????row.setHeight((short)?400); ?
  85. ?
  86. ????????//?定义单元格为字符串类型 ?
  87. ????????cell.setCellType(HSSFCell.ENCODING_UTF_16); ?
  88. ????????cell.setCellValue(new?HSSFRichTextString("南京城区各网点进件统计报表")); ?
  89. ?
  90. ????????//?指定合并区域 ?
  91. ????????sheet.addMergedRegion(new?Region(0,?(short)?0,?0,?(short)?colSum)); ?
  92. ?
  93. ????????HSSFCellStyle?cellStyle?=?wb.createCellStyle(); ?
  94. ?
  95. ????????cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);?//?指定单元格居中对齐 ?
  96. ????????cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//?指定单元格垂直居中对齐 ?
  97. ????????cellStyle.setWrapText(true);//?指定单元格自动换行 ?
  98. ?
  99. ????????//?设置单元格字体 ?
  100. ????????HSSFFont?font?=?wb.createFont(); ?
  101. ????????font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); ?
  102. ????????font.setFontName("宋体"); ?
  103. ????????font.setFontHeight((short)?300); ?
  104. ????????cellStyle.setFont(font); ?
  105. ?
  106. ????????cell.setCellStyle(cellStyle); ?
  107. ????} ?
  108. ?
  109. ????/** ?
  110. ?????*?创建通用报表第二行 ?
  111. ?????*? ?
  112. [email protected] ?
  113. ?????*????????????统计条件数组 ?
  114. [email protected] ?
  115. ?????*????????????需要合并到的列索引 ?
  116. ?????*/?
  117. ????public?void?createNormalTwoRow(String[]?params,?int?colSum)?{ ?
  118. ????????HSSFRow?row1?=?sheet.createRow(1); ?
  119. ????????row1.setHeight((short)?300); ?
  120. ?
  121. ????????HSSFCell?cell2?=?row1.createCell(0); ?
  122. ?
  123. ????????cell2.setCellType(HSSFCell.ENCODING_UTF_16); ?
  124. ????????cell2.setCellValue(new?HSSFRichTextString("统计时间:"?+?params[0]?+?"至"?
  125. ????????????????+?params[1])); ?
  126. ?
  127. ????????//?指定合并区域 ?
  128. ????????sheet.addMergedRegion(new?Region(1,?(short)?0,?1,?(short)?colSum)); ?
  129. ?
  130. ????????HSSFCellStyle?cellStyle?=?wb.createCellStyle(); ?
  131. ????????cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);?//?指定单元格居中对齐 ?
  132. ????????cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//?指定单元格垂直居中对齐 ?
  133. ????????cellStyle.setWrapText(true);//?指定单元格自动换行 ?
  134. ?
  135. ????????//?设置单元格字体 ?
  136. ????????HSSFFont?font?=?wb.createFont(); ?
  137. ????????font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); ?
  138. ????????font.setFontName("宋体"); ?
  139. ????????font.setFontHeight((short)?250); ?
  140. ????????cellStyle.setFont(font); ?
  141. ?
  142. ????????cell2.setCellStyle(cellStyle); ?
  143. ?
  144. ????} ?
  145. ?
  146. ????/** ?
  147. ?????*?设置报表标题 ?
  148. ?????*? ?
  149. [email protected] ?
  150. ?????*????????????标题字符串数组 ?
  151. ?????*/?
  152. ????public?void?createColumHeader(String[]?columHeader)?{ ?
  153. ?
  154. ????????//?设置列头 ?
  155. ????????HSSFRow?row2?=?sheet.createRow(2); ?
  156. ?
  157. ????????//?指定行高 ?
  158. ????????row2.setHeight((short)?600); ?
  159. ?
  160. ????????HSSFCellStyle?cellStyle?=?wb.createCellStyle(); ?
  161. ????????cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);?//?指定单元格居中对齐 ?
  162. ????????cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//?指定单元格垂直居中对齐 ?
  163. ????????cellStyle.setWrapText(true);//?指定单元格自动换行 ?
  164. ?
  165. ????????//?单元格字体 ?
  166. ????????HSSFFont?font?=?wb.createFont(); ?
  167. ????????font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); ?
  168. ????????font.setFontName("宋体"); ?
  169. ????????font.setFontHeight((short)?250); ?
  170. ????????cellStyle.setFont(font); ?
  171. ?
  172. ????????/* ?
  173. ?????????*?cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);?//?设置单无格的边框为粗体 ?
  174. ?????????*?cellStyle.setBottomBorderColor(HSSFColor.BLACK.index);?//?设置单元格的边框颜色. ?
  175. ?????????*?cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN); ?
  176. ?????????*?cellStyle.setLeftBorderColor(HSSFColor.BLACK.index); ?
  177. ?????????*?cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN); ?
  178. ?????????*?cellStyle.setRightBorderColor(HSSFColor.BLACK.index); ?
  179. ?????????*?cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN); ?
  180. ?????????*?cellStyle.setTopBorderColor(HSSFColor.BLACK.index); ?
  181. ?????????*/?
  182. ?
  183. ????????//?设置单元格背景色 ?
  184. ????????cellStyle.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index); ?
  185. ????????cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); ?
  186. ?
  187. ????????HSSFCell?cell3?=?null; ?
  188. ?
  189. ????????for?(int?i?=?0;?i?<?columHeader.length;?i++)?{ ?
  190. ????????????cell3?=?row2.createCell(i); ?
  191. ????????????cell3.setCellType(HSSFCell.ENCODING_UTF_16); ?
  192. ????????????cell3.setCellStyle(cellStyle); ?
  193. ????????????cell3.setCellValue(new?HSSFRichTextString(columHeader[i])); ?
  194. ????????} ?
  195. ?
  196. ????} ?
  197. ?
  198. ????/** ?
  199. ?????*?创建内容单元格 ?
  200. ?????*? ?
  201. [email protected] ?
  202. ?????*????????????HSSFWorkbook ?
  203. [email protected] ?
  204. ?????*????????????HSSFRow ?
  205. [email protected] ?
  206. ?????*????????????short型的列索引 ?
  207. [email protected] ?
  208. ?????*????????????对齐方式 ?
  209. [email protected] ?
  210. ?????*????????????列值 ?
  211. ?????*/?
  212. ????public?void?cteateCell(HSSFWorkbook?wb,?HSSFRow?row,?int?col,?short?align, ?
  213. ????????????String?val)?{ ?
  214. ????????HSSFCell?cell?=?row.createCell(col); ?
  215. ????????cell.setCellType(HSSFCell.ENCODING_UTF_16); ?
  216. ????????cell.setCellValue(new?HSSFRichTextString(val)); ?
  217. ????????HSSFCellStyle?cellstyle?=?wb.createCellStyle(); ?
  218. ????????cellstyle.setAlignment(align); ?
  219. ????????cell.setCellStyle(cellstyle); ?
  220. ????} ?
  221. ?
  222. ????/** ?
  223. ?????*?创建合计行 ?
  224. ?????*? ?
  225. [email protected] ?
  226. ?????*????????????需要合并到的列索引 ?
  227. [email protected] ?
  228. ?????*/?
  229. ????public?void?createLastSumRow(int?colSum,?String[]?cellValue)?{ ?
  230. ?
  231. ????????HSSFCellStyle?cellStyle?=?wb.createCellStyle(); ?
  232. ????????cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);?//?指定单元格居中对齐 ?
  233. ????????cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//?指定单元格垂直居中对齐 ?
  234. ????????cellStyle.setWrapText(true);//?指定单元格自动换行 ?
  235. ?
  236. ????????//?单元格字体 ?
  237. ????????HSSFFont?font?=?wb.createFont(); ?
  238. ????????font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); ?
  239. ????????font.setFontName("宋体"); ?
  240. ????????font.setFontHeight((short)?250); ?
  241. ????????cellStyle.setFont(font); ?
  242. ?
  243. ????????HSSFRow?lastRow?=?sheet.createRow((short)?(sheet.getLastRowNum()?+?1)); ?
  244. ????????HSSFCell?sumCell?=?lastRow.createCell(0); ?
  245. ?
  246. ????????sumCell.setCellValue(new?HSSFRichTextString("合计")); ?
  247. ????????sumCell.setCellStyle(cellStyle); ?
  248. ????????sheet.addMergedRegion(new?Region(sheet.getLastRowNum(),?(short)?0, ?
  249. ????????????????sheet.getLastRowNum(),?(short)?colSum));//?指定合并区域 ?
  250. ?
  251. ????????for?(int?i?=?2;?i?<?(cellValue.length?+?2);?i++)?{ ?
  252. ????????????sumCell?=?lastRow.createCell(i); ?
  253. ????????????sumCell.setCellStyle(cellStyle); ?
  254. ????????????sumCell.setCellValue(new?HSSFRichTextString(cellValue[i?-?2])); ?
  255. ?
  256. ????????} ?
  257. ?
  258. ????} ?
  259. ?
  260. ????/** ?
  261. ?????*?输入EXCEL文件 ?
  262. ?????*? ?
  263. [email protected] ?
  264. ?????*????????????文件名 ?
  265. ?????*/?
  266. ????public?void?outputExcel(String?fileName)?{ ?
  267. ????????FileOutputStream?fos?=?null; ?
  268. ????????try?{ ?
  269. ????????????fos?=?new?FileOutputStream(new?File(fileName)); ?
  270. ????????????wb.write(fos); ?
  271. ????????????fos.close(); ?
  272. ????????}?catch?(FileNotFoundException?e)?{ ?
  273. ????????????e.printStackTrace(); ?
  274. ????????}?catch?(IOException?e)?{ ?
  275. ????????????e.printStackTrace(); ?
  276. ????????} ?
  277. ????} ?
  278. }?

报表生成类:ComplexExportExcelClient.java

?

  1. package?com.bzu.search.action; ?
  2. ?
  3. import?java.util.ArrayList; ?
  4. import?java.util.List; ?
  5. ?
  6. import?org.apache.poi.hssf.usermodel.HSSFCell; ?
  7. import?org.apache.poi.hssf.usermodel.HSSFCellStyle; ?
  8. import?org.apache.poi.hssf.usermodel.HSSFFont; ?
  9. import?org.apache.poi.hssf.usermodel.HSSFRichTextString; ?
  10. import?org.apache.poi.hssf.usermodel.HSSFRow; ?
  11. import?org.apache.poi.hssf.usermodel.HSSFSheet; ?
  12. import?org.apache.poi.hssf.usermodel.HSSFWorkbook; ?
  13. import?org.apache.poi.hssf.util.Region; ?
  14. ?
  15. /** ?
  16. ?*?拒绝件报表生成类. ?
  17. ?*? ?
  18. [email protected] ?
  19. [email protected]$Revision:$ ?
  20. ?*/?
  21. public?class?ComplexExportExcelClient?{ ?
  22. ?
  23. ????private?static?HSSFWorkbook?wb?=?new?HSSFWorkbook(); ?
  24. ?
  25. ????private?static?HSSFSheet?sheet?=?wb.createSheet(); ?
  26. ?
  27. ????@SuppressWarnings({?"unchecked",?"deprecation"?}) ?
  28. ????public?static?void?main(String[]?args)?{ ?
  29. ?
  30. ????????ExportExcel?exportExcel?=?new?ExportExcel(wb,?sheet); ?
  31. ?
  32. ????????//?创建列标头LIST ?
  33. ????????List?fialList?=?new?ArrayList(); ?
  34. ?
  35. ????????fialList.add("申请人未提供任何联系方式"); ?
  36. ????????fialList.add("无工作单位信息且未提供收入来源信息"); ?
  37. ????????fialList.add("有工作单位但未提供单位地址或电话"); ?
  38. ????????fialList.add("家庭地址缺失"); ?
  39. ????????fialList.add("客户身份证明资料缺"); ?
  40. ????????fialList.add("签名缺失或签名不符合要求"); ?
  41. ????????fialList.add("其它"); ?
  42. ?
  43. ????????List?errorList?=?new?ArrayList(); ?
  44. ?
  45. ????????errorList.add("客户主动取消"); ?
  46. ????????errorList.add("个人征信不良"); ?
  47. ????????errorList.add("欺诈申请"); ?
  48. ????????errorList.add("申请人基本条件不符"); ?
  49. ????????errorList.add("申请材料不合规"); ?
  50. ????????errorList.add("无法正常完成征信"); ?
  51. ????????errorList.add("重复申请"); ?
  52. ????????errorList.add("其他"); ?
  53. ?
  54. ????????//?计算该报表的列数 ?
  55. ????????int?number?=?2?+?fialList.size()?*?2?+?errorList.size()?*?2; ?
  56. ?
  57. ????????//?给工作表列定义列宽(实际应用自己更改列数) ?
  58. ????????for?(int?i?=?0;?i?<?number;?i++)?{ ?
  59. ????????????sheet.setColumnWidth(i,?3000); ?
  60. ????????} ?
  61. ?
  62. ????????//?创建单元格样式 ?
  63. ????????HSSFCellStyle?cellStyle?=?wb.createCellStyle(); ?
  64. ?
  65. ????????//?指定单元格居中对齐 ?
  66. ????????cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); ?
  67. ?
  68. ????????//?指定单元格垂直居中对齐 ?
  69. ????????cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); ?
  70. ?
  71. ????????//?指定当单元格内容显示不下时自动换行 ?
  72. ????????cellStyle.setWrapText(true); ?
  73. ?
  74. ????????//?设置单元格字体 ?
  75. ????????HSSFFont?font?=?wb.createFont(); ?
  76. ????????font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); ?
  77. ????????font.setFontName("宋体"); ?
  78. ????????font.setFontHeight((short)?200); ?
  79. ????????cellStyle.setFont(font); ?
  80. ?
  81. ????????//?创建报表头部 ?
  82. ????????exportExcel.createNormalHead("南京地区申请资料拒件分析统计",?number); ?
  83. ?
  84. ????????//?设置第二行 ?
  85. ????????String[]?params?=?new?String[]?{?"????年??月??日",?"??年??月??日"?}; ?
  86. ????????exportExcel.createNormalTwoRow(params,?number); ?
  87. ?
  88. ????????//?设置列头 ?
  89. ????????HSSFRow?row2?=?sheet.createRow(2); ?
  90. ?
  91. ????????HSSFCell?cell0?=?row2.createCell(0); ?
  92. ????????cell0.setCellStyle(cellStyle); ?
  93. ????????cell0.setCellValue(new?HSSFRichTextString("机构代码")); ?
  94. ?
  95. ????????HSSFCell?cell1?=?row2.createCell(1); ?
  96. ????????cell1.setCellStyle(cellStyle); ?
  97. ????????cell1.setCellValue(new?HSSFRichTextString("支行名称")); ?
  98. ?
  99. ????????HSSFCell?cell2?=?row2.createCell(2); ?
  100. ????????cell2.setCellStyle(cellStyle); ?
  101. ????????cell2.setCellValue(new?HSSFRichTextString("无效件")); ?
  102. ?
  103. ????????HSSFCell?cell3?=?row2.createCell(2?*?fialList.size()?+?2); ?
  104. ????????cell3.setCellStyle(cellStyle); ?
  105. ????????cell3.setCellValue(new?HSSFRichTextString("拒绝件")); ?
  106. ?
  107. ????????HSSFRow?row3?=?sheet.createRow(3); ?
  108. ?
  109. ????????//?设置行高 ?
  110. ????????row3.setHeight((short)?800); ?
  111. ?
  112. ????????HSSFCell?row3Cell?=?null; ?
  113. ????????int?m?=?0; ?
  114. ????????int?n?=?0; ?
  115. ?
  116. ????????//?创建不同的LIST的列标题 ?
  117. ????????for?(int?i?=?2;?i?<?number;?i?=?i?+?2)?{ ?
  118. ?
  119. ????????????if?(i?<?2?*?fialList.size()?+?2)?{ ?
  120. ????????????????row3Cell?=?row3.createCell(i); ?
  121. ????????????????row3Cell.setCellStyle(cellStyle); ?
  122. ????????????????row3Cell.setCellValue(new?HSSFRichTextString(fialList.get(m) ?
  123. ????????????????????????.toString())); ?
  124. ????????????????m++; ?
  125. ????????????}?else?{ ?
  126. ????????????????row3Cell?=?row3.createCell(i); ?
  127. ????????????????row3Cell.setCellStyle(cellStyle); ?
  128. ????????????????row3Cell.setCellValue(new?HSSFRichTextString(errorList.get(n) ?
  129. ????????????????????????.toString())); ?
  130. ????????????????n++; ?
  131. ????????????} ?
  132. ?
  133. ????????} ?
  134. ?
  135. ????????//?创建最后一列的合计列 ?
  136. ????????row3Cell?=?row3.createCell(number); ?
  137. ????????row3Cell.setCellStyle(cellStyle); ?
  138. ????????row3Cell.setCellValue(new?HSSFRichTextString("合计")); ?
  139. ?
  140. ????????//?合并单元格 ?
  141. ????????HSSFRow?row4?=?sheet.createRow(4); ?
  142. ?
  143. ????????//?合并第三行到第五行的第一列 ?
  144. ????????sheet.addMergedRegion(new?Region(2,?(short)?0,?4,?(short)?0)); ?
  145. ?
  146. ????????//?合并第三行到第五行的第二列 ?
  147. ????????sheet.addMergedRegion(new?Region(2,?(short)?1,?4,?(short)?1)); ?
  148. ?
  149. ????????//?合并第三行的第三列到第AA指定的列 ?
  150. ????????int?aa?=?2?*?fialList.size()?+?1; ?
  151. ????????sheet.addMergedRegion(new?Region(2,?(short)?2,?2,?(short)?aa)); ?
  152. ?
  153. ????????int?start?=?aa?+?1; ?
  154. ?
  155. ????????sheet.addMergedRegion(new?Region(2,?(short)?start,?2, ?
  156. ????????????????(short)?(number?-?1))); ?
  157. ?
  158. ????????//?循环合并第四行的行,并且是每2列合并成一列 ?
  159. ????????for?(int?i?=?2;?i?<?number;?i?=?i?+?2)?{ ?
  160. ????????????sheet.addMergedRegion(new?Region(3,?(short)?i,?3,?(short)?(i?+?1))); ?
  161. ?
  162. ????????} ?
  163. ?
  164. ????????//?根据列数奇偶数的不同创建不同的列标题 ?
  165. ????????for?(int?i?=?2;?i?<?number;?i++)?{ ?
  166. ????????????if?(i?<?2?*?fialList.size()?+?2)?{ ?
  167. ?
  168. ????????????????if?(i?%?2?==?0)?{ ?
  169. ????????????????????HSSFCell?cell?=?row4.createCell(i); ?
  170. ????????????????????cell.setCellStyle(cellStyle); ?
  171. ????????????????????cell.setCellValue(new?HSSFRichTextString("无效量")); ?
  172. ????????????????}?else?{ ?
  173. ????????????????????HSSFCell?cell?=?row4.createCell(i); ?
  174. ????????????????????cell.setCellStyle(cellStyle); ?
  175. ????????????????????cell.setCellValue(new?HSSFRichTextString("占比")); ?
  176. ????????????????} ?
  177. ????????????}?else?{ ?
  178. ????????????????if?(i?%?2?==?0)?{ ?
  179. ????????????????????HSSFCell?cell?=?row4.createCell(i); ?
  180. ????????????????????cell.setCellStyle(cellStyle); ?
  181. ????????????????????cell.setCellValue(new?HSSFRichTextString("拒绝量")); ?
  182. ????????????????}?else?{ ?
  183. ????????????????????HSSFCell?cell?=?row4.createCell(i); ?
  184. ????????????????????cell.setCellStyle(cellStyle); ?
  185. ????????????????????cell.setCellValue(new?HSSFRichTextString("占比")); ?
  186. ????????????????} ?
  187. ????????????} ?
  188. ?
  189. ????????} ?
  190. ?
  191. ????????//?循环创建中间的单元格的各项的值 ?
  192. ????????for?(int?i?=?5;?i?<?number;?i++)?{ ?
  193. ????????????HSSFRow?row?=?sheet.createRow((short)?i); ?
  194. ????????????for?(int?j?=?0;?j?<=?number;?j++)?{ ?
  195. ????????????????exportExcel ?
  196. ????????????????????????.cteateCell(wb,?row,?(short)?j, ?
  197. ????????????????????????????????HSSFCellStyle.ALIGN_CENTER_SELECTION,?String ?
  198. ????????????????????????????????????????.valueOf(j)); ?
  199. ????????????} ?
  200. ?
  201. ????????} ?
  202. ?
  203. ????????//?创建最后一行的合计行 ?
  204. ????????String[]?cellValue?=?new?String[number?-?1]; ?
  205. ????????for?(int?i?=?0;?i?<?number?-?1;?i++)?{ ?
  206. ????????????cellValue[i]?=?String.valueOf(i); ?
  207. ?
  208. ????????} ?
  209. ????????exportExcel.createLastSumRow(1,?cellValue); ?
  210. ?
  211. ????????exportExcel.outputExcel("c:\\拒绝件统计.xls"); ?
  212. ?
  213. ????} ?
  214. }?

??运行上述两段代码你就会在c盘的根目录下看到一个拒绝件统计.xls文件

转自:http://www.fengfly.com/plus/view-210184-1.html

  相关解决方案