7f30c69afe39eae690fe95e2d465687d60ff496e.svn-base 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. package cn.com.goldenwater.dcproj.utils.export;
  2. import cn.com.goldenwater.dcproj.model.BisZhejiangCheckPlan;
  3. import org.apache.poi.hssf.usermodel.*;
  4. import org.apache.poi.ss.usermodel.HorizontalAlignment;
  5. import javax.servlet.http.HttpServletResponse;
  6. import java.io.IOException;
  7. import java.io.OutputStream;
  8. import java.io.UnsupportedEncodingException;
  9. import java.text.DecimalFormat;
  10. import java.util.List;
  11. public class ExcelUtil {
  12. /**
  13. * 导出Excel
  14. * @param sheetName sheet名称
  15. * @param title 标题
  16. * @param values 内容,可以修改为list 或者 map
  17. * @param wb HSSFWorkbook对象
  18. * @return
  19. */
  20. public static HSSFWorkbook getHSSFWorkbook(String sheetName,String []title,String [][]values, HSSFWorkbook wb){
  21. // 第一步,创建一个HSSFWorkbook,对应一个Excel文件
  22. if(wb == null){
  23. wb = new HSSFWorkbook();
  24. }
  25. // 第二步,在workbook中添加一个sheet,对应Excel文件中的sheet
  26. HSSFSheet sheet = wb.createSheet(sheetName);
  27. // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制
  28. HSSFRow row = sheet.createRow(0);
  29. // 第四步,创建单元格,并设置值表头 设置表头居中
  30. HSSFCellStyle style = wb.createCellStyle();
  31. style.setAlignment(HorizontalAlignment.CENTER); // 创建一个居中格式
  32. //声明列对象
  33. HSSFCell cell = null;
  34. //创建标题
  35. for(int i=0;i<title.length;i++){
  36. cell = row.createCell(i);
  37. cell.setCellValue(title[i]);
  38. cell.setCellStyle(style);
  39. }
  40. //创建内容
  41. for(int i=0;i<values.length;i++){
  42. row = sheet.createRow(i + 1);
  43. for(int j=0;j<values[i].length;j++){
  44. //将内容按顺序赋给对应的列对象
  45. row.createCell(j).setCellValue(values[i][j]);
  46. }
  47. }
  48. return wb;
  49. }
  50. public static void sendExcel(List<BisZhejiangCheckPlan> list, HttpServletResponse response,String name){
  51. DecimalFormat df = new DecimalFormat("#.00");
  52. //excel标题
  53. String[] title = {"序号","年度","月份"};
  54. //,"事项名称","事项详细名称","检查内容","检查方式","机构名称"
  55. // ,"督查类型","责任处室","督查结束时间","督查开始时间","操作人","事项状态"
  56. //excel文件名
  57. String fileName = name+System.currentTimeMillis()+".xls";
  58. //sheet名
  59. String sheetName = name;
  60. // 将数据转换成String [][] 二维数组(具体情况根据自身需求定)
  61. String [][] content = new String[list.size()][title.length];
  62. int id=1;
  63. int i=0;
  64. for (BisZhejiangCheckPlan f: list) {
  65. content[i][0] = String.valueOf(id);
  66. content[i][1] = String.valueOf(f.getYear());
  67. content[i][2] = String.valueOf(f.getMonth());
  68. /* content[i][3] = String.valueOf(f.getWokerNm());
  69. content[i][4] = String.valueOf(f.getWorkerNmDesc());
  70. content[i][5] = String.valueOf(f.getContent());
  71. content[i][6] = String.valueOf(f.getCheckWay());
  72. content[i][7] = String.valueOf(f.getOrgName());
  73. content[i][8] = String.valueOf(f.getInspName());
  74. content[i][9] = String.valueOf(f.getDepartNm());
  75. content[i][10] = String.valueOf(f.getCheckEndDate());
  76. content[i][11] = String.valueOf(f.getCheckSttdDate());
  77. content[i][12] = String.valueOf(f.getPersName());
  78. content[i][13] = String.valueOf(f.getState());*/
  79. id++;
  80. i++;
  81. }
  82. //创建HSSFWorkbook
  83. HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook(sheetName, title, content, null);
  84. //响应到客户端
  85. setResponseHeader(response, fileName);
  86. OutputStream os = null;
  87. try {
  88. os = response.getOutputStream();
  89. wb.write(os);
  90. os.flush();
  91. os.close();
  92. } catch (IOException e) {
  93. e.printStackTrace();
  94. }
  95. }
  96. //发送响应流方法
  97. public static void setResponseHeader(HttpServletResponse response, String fileName) {
  98. try {
  99. try {
  100. fileName = new String(fileName.getBytes(),"ISO8859-1");
  101. } catch (UnsupportedEncodingException e) {
  102. // TODO Auto-generated catch block
  103. e.printStackTrace();
  104. }
  105. response.setContentType("application/octet-stream;charset=ISO8859-1");
  106. response.setHeader("Content-Disposition", "attachment;filename="+ fileName);
  107. response.addHeader("Pargam", "no-cache");
  108. response.addHeader("Cache-Control", "no-cache");
  109. } catch (Exception ex) {
  110. ex.printStackTrace();
  111. }
  112. }
  113. }