1. package oa.common.utils; 2. import java.io.OutputStream; 3. import java.util.List;
4. import javax.servlet.http.HttpServletResponse; 5. import org.apache.struts2.ServletActionContext; 6. import java.lang.reflect.Field; 7.
8. import jxl.Workbook;
9. import jxl.format.Alignment; 10. import jxl.format.Border;
11. import jxl.format.BorderLineStyle; 12. import jxl.format.VerticalAlignment; 13. import jxl.write.Label;
14. import jxl.write.WritableCellFormat; 15. import jxl.write.WritableFont; 16. import jxl.write.WritableSheet; 17. import jxl.write.WritableWorkbook; 18. /***
19. * @author lsf 20. */
21. public class ExportExcel {
22. /**************************************************************************
*
23. * @param fileName EXCEL文件名称
24. * @param listTitle EXCEL文件第一行列标题集合 25. * @param listContent EXCEL文件正文数据集合 26. * @return 27. */
28. public final static String exportExcel(String fileName,String[] Title, Lis
t
29. String result=\系统提示:Excel文件导出成功!\; 30. // 以下开始输出到EXCEL 31. try {
32. //定义输出流,以便打开保存对话框______________________begin
33. HttpServletResponse response=ServletActionContext.getResponse(); 34. OutputStream os = response.getOutputStream();// 取得输出流 35. response.reset();// 清空输出流
36. response.setHeader(\, \+ new St
ring(fileName.getBytes(\),\)); 37. // 设定输出文件头
38. response.setContentType(\);// 定义输出类型 39. //定义输出流,以便打开保存对话框_______________________end 40.
41. /** **********创建工作簿************ */
42. WritableWorkbook workbook = Workbook.createWorkbook(os); 43.
44. /** **********创建工作表************ */ 45.
46. WritableSheet sheet = workbook.createSheet(\, 0); 47.
48. /** **********设置纵横打印(默认为纵打)、打印纸***************** */ 49. jxl.SheetSettings sheetset = sheet.getSettings(); 50. sheetset.setProtected(false); 51. 52.
53. /** ************设置单元格字体************** */
54. WritableFont NormalFont = new WritableFont(WritableFont.ARIAL, 10); 55. WritableFont BoldFont = new WritableFont(WritableFont.ARIAL, 10,WritableF
ont.BOLD); 56.
57. /** ************以下设置三种单元格样式,灵活备用************ */ 58. // 用于标题居中
59. WritableCellFormat wcf_center = new WritableCellFormat(BoldFont); 60. wcf_center.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条 61. wcf_center.setVerticalAlignment(VerticalAlignment.CENTRE); // 文字垂直对
齐
62. wcf_center.setAlignment(Alignment.CENTRE); // 文字水平对齐 63. wcf_center.setWrap(false); // 文字是否换行 64.
65. // 用于正文居左
66. WritableCellFormat wcf_left = new WritableCellFormat(NormalFont); 67. wcf_left.setBorder(Border.NONE, BorderLineStyle.THIN); // 线条
68. wcf_left.setVerticalAlignment(VerticalAlignment.CENTRE); // 文字垂直对齐 69. wcf_left.setAlignment(Alignment.LEFT); // 文字水平对齐 70. wcf_left.setWrap(false); // 文字是否换行 71. 72.
73. /** ***************以下是EXCEL开头大标题,暂时省略********************* */ 74. //sheet.mergeCells(0, 0, colWidth, 0);
75. //sheet.addCell(new Label(0, 0, \报表\
76. /** ***************以下是EXCEL第一行列标题********************* */ 77. for (int i = 0; i < Title.length; i++) {
78. sheet.addCell(new Label(i, 0,Title[i],wcf_center)); 79. }
80. /** ***************以下是EXCEL正文数据********************* */ 81. Field[] fields=null; 82. int i=1;
83. for(Object obj:listContent){
84. fields=obj.getClass().getDeclaredFields(); 85. int j=0;
86. for(Field v:fields){ 87. v.setAccessible(true); 88. Object va=v.get(obj); 89. if(va==null){ 90. va=\; 91. }
92. sheet.addCell(new Label(j, i,va.toString(),wcf_left)); 93. j++; 94. } 95. i++; 96. }
97. /** **********将以上缓存中的内容写到EXCEL文件中******** */ 98. workbook.write();
99. /** *********关闭文件************* */ 100. workbook.close(); 101.
102. } catch (Exception e) {
103. result=\系统提示:Excel文件导出失败,原因:\+ e.toString(); 104. System.out.println(result); 105. e.printStackTrace(); 106. }
107. return result; 108. } 109. }
3.通用导出:
[java] view plaincopy
1. package com.huateng.common.excel.parser; 2. 3.
4. import java.io.FileOutputStream; 5. import java.io.OutputStream; 6. import java.lang.reflect.Field; 7. import java.lang.reflect.Method; 8. import java.util.ArrayList; 9. import java.util.Collection; 10. import java.util.Date; 11. import java.util.HashMap; 12. import java.util.Iterator; 13. import java.util.List; 14. import java.util.Map;
15. 16.
17. import org.apache.poi.hssf.usermodel.HSSFRichTextString; 18. import org.apache.poi.hssf.usermodel.HSSFWorkbook; 19. import org.apache.poi.ss.usermodel.Cell;
20. import org.apache.poi.ss.usermodel.RichTextString; 21. import org.apache.poi.ss.usermodel.Row; 22. import org.apache.poi.ss.usermodel.Sheet; 23. import org.apache.poi.ss.usermodel.Workbook; 24. 25.
26. import com.huateng.test.pojo.Student; 27. 28.
29. public class ExcelExport2 { 30. 31.
32. public static void exportExcel(String title, Class pojoClass,Collection data
Set,
33. OutputStream out) {
34. //使用userModel模式实现的,当excel文档出现10万级别的大数据文件可能导致OOM内存溢
出
35. exportExcelInUserModel(title, pojoClass,dataSet,out);
36. //使用eventModel实现,可以一边读一边处理,效率较高,但是实现复杂,暂时未实现 37. }
38. private static void exportExcelInUserModel(String title, Class pojoClass,Col
lection dataSet, 39. OutputStream out) { 40. try {
41. // 首先检查数据看是否是正确的
42. if (dataSet == null || dataSet.size()==0) { 43. throw new Exception(\导出数据为空!\); 44. }
45. if(title == null || out == null || pojoClass == null) 46. {
47. throw new Exception(\传入参数不能为空!\); 48. }
49. // 声明一个工作薄
50. Workbook workbook = new HSSFWorkbook(); 51. // 生成一个表格
52. Sheet sheet = workbook.createSheet(title); 53. 54. 55. // 标题

