| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- package cn.com.goldenwater.dcproj.utils.export;
- import cn.com.goldenwater.dcproj.model.BisZhejiangCheckPlan;
- import org.apache.poi.hssf.usermodel.*;
- import org.apache.poi.ss.usermodel.HorizontalAlignment;
- import javax.servlet.http.HttpServletResponse;
- import java.io.IOException;
- import java.io.OutputStream;
- import java.io.UnsupportedEncodingException;
- import java.text.DecimalFormat;
- import java.util.List;
- public class ExcelUtil {
- /**
- * 导出Excel
- * @param sheetName sheet名称
- * @param title 标题
- * @param values 内容,可以修改为list 或者 map
- * @param wb HSSFWorkbook对象
- * @return
- */
- public static HSSFWorkbook getHSSFWorkbook(String sheetName,String []title,String [][]values, HSSFWorkbook wb){
- // 第一步,创建一个HSSFWorkbook,对应一个Excel文件
- if(wb == null){
- wb = new HSSFWorkbook();
- }
- // 第二步,在workbook中添加一个sheet,对应Excel文件中的sheet
- HSSFSheet sheet = wb.createSheet(sheetName);
- // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制
- HSSFRow row = sheet.createRow(0);
- // 第四步,创建单元格,并设置值表头 设置表头居中
- HSSFCellStyle style = wb.createCellStyle();
- style.setAlignment(HorizontalAlignment.CENTER); // 创建一个居中格式
- //声明列对象
- HSSFCell cell = null;
- //创建标题
- for(int i=0;i<title.length;i++){
- cell = row.createCell(i);
- cell.setCellValue(title[i]);
- cell.setCellStyle(style);
- }
- //创建内容
- for(int i=0;i<values.length;i++){
- row = sheet.createRow(i + 1);
- for(int j=0;j<values[i].length;j++){
- //将内容按顺序赋给对应的列对象
- row.createCell(j).setCellValue(values[i][j]);
- }
- }
- return wb;
- }
- public static void sendExcel(List<BisZhejiangCheckPlan> list, HttpServletResponse response,String name){
- DecimalFormat df = new DecimalFormat("#.00");
- //excel标题
- String[] title = {"序号","年度","月份"};
- //,"事项名称","事项详细名称","检查内容","检查方式","机构名称"
- // ,"督查类型","责任处室","督查结束时间","督查开始时间","操作人","事项状态"
- //excel文件名
- String fileName = name+System.currentTimeMillis()+".xls";
- //sheet名
- String sheetName = name;
- // 将数据转换成String [][] 二维数组(具体情况根据自身需求定)
- String [][] content = new String[list.size()][title.length];
- int id=1;
- int i=0;
- for (BisZhejiangCheckPlan f: list) {
- content[i][0] = String.valueOf(id);
- content[i][1] = String.valueOf(f.getYear());
- content[i][2] = String.valueOf(f.getMonth());
- /* content[i][3] = String.valueOf(f.getWokerNm());
- content[i][4] = String.valueOf(f.getWorkerNmDesc());
- content[i][5] = String.valueOf(f.getContent());
- content[i][6] = String.valueOf(f.getCheckWay());
- content[i][7] = String.valueOf(f.getOrgName());
- content[i][8] = String.valueOf(f.getInspName());
- content[i][9] = String.valueOf(f.getDepartNm());
- content[i][10] = String.valueOf(f.getCheckEndDate());
- content[i][11] = String.valueOf(f.getCheckSttdDate());
- content[i][12] = String.valueOf(f.getPersName());
- content[i][13] = String.valueOf(f.getState());*/
- id++;
- i++;
- }
- //创建HSSFWorkbook
- HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook(sheetName, title, content, null);
- //响应到客户端
- setResponseHeader(response, fileName);
- OutputStream os = null;
- try {
- os = response.getOutputStream();
- wb.write(os);
- os.flush();
- os.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- //发送响应流方法
- public static void setResponseHeader(HttpServletResponse response, String fileName) {
- try {
- try {
- fileName = new String(fileName.getBytes(),"ISO8859-1");
- } catch (UnsupportedEncodingException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- response.setContentType("application/octet-stream;charset=ISO8859-1");
- response.setHeader("Content-Disposition", "attachment;filename="+ fileName);
- response.addHeader("Pargam", "no-cache");
- response.addHeader("Cache-Control", "no-cache");
- } catch (Exception ex) {
- ex.printStackTrace();
- }
- }
- }
|