Loading

springmvc 导出excel

springmvc 导出excel

http://blog.csdn.net/wlsyn/article/details/10195193

package com.tuling.view;
import java.io.OutputStream;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.web.servlet.view.document.AbstractExcelView;
public class ViewExcel extends AbstractExcelView {
    @Override
    public void buildExcelDocument(Map<String, Object> obj, HSSFWorkbook workbook, HttpServletRequest request, HttpServletResponse response) throws Exception {
        String filename = "message.xls";// 设置下载时客户端Excel的名称
        // filename = StringUtils.encodeFilename(filename, request);//处理中文文件名
        response.setContentType("application/vnd.ms-excel");
        response.setHeader("Content-disposition", "attachment;filename=" + filename);
        OutputStream ouputStream = response.getOutputStream();
        workbook.write(ouputStream);
        ouputStream.flush();
        ouputStream.close();
    }
}

controller

@RequestMapping(value = "export")
    public ModelAndView exportExcel(ModelMap model, HttpServletRequest request, HttpServletResponse response) {
        ViewExcel viewExcel = new ViewExcel();
        Map<String, Object> obj = null;
        // 获取数据库表生成的workbook
        HSSFWorkbook workbook = new HSSFWorkbook();
        List<Message> list = messageMapper.selectAll();
        // excel文件名
        try {
            HSSFSheet sheet = workbook.createSheet("消息反馈");
            // workbook.setSheetName(0,sheetName,HSSFWorkbook..ENCODING_UTF_16);
            HSSFRow row = sheet.createRow((short) 0);
            HSSFCell cell = null;
            // 写入各个字段的名称
            cell = row.createCell(0);
            cell.setCellType(HSSFCell.CELL_TYPE_STRING);
            cell.setCellValue("名称");
            cell = row.createCell(1);
            cell.setCellType(HSSFCell.CELL_TYPE_STRING);
            cell.setCellValue("公司");
            int iRow = 1;
            for (Message message : list) {
                // 写入各条记录,每条记录对应Excel中的一行
                row = sheet.createRow((short) iRow);
                cell = row.createCell(0);
                cell.setCellType(HSSFCell.CELL_TYPE_STRING);
                cell.setCellValue(message.getName());
                cell = row.createCell(1);
                cell.setCellType(HSSFCell.CELL_TYPE_STRING);
                cell.setCellValue(message.getCompany());
                iRow++;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        try {
            viewExcel.buildExcelDocument(obj, workbook, request, response);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return new ModelAndView(viewExcel, model);
    }

 处理一下中文

        SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
        String filename = format.format(new Date())+"消息反馈.xls";// 设置下载时客户端Excel的名称
        // filename = StringUtils.encodeFilename(filename, request);//处理中文文件名
        filename = URLEncoder.encode(filename, "UTF-8"); 

 设置表格的列宽

sheet.setColumnWidth(2, 10000);

 

posted @ 2017-03-19 13:58  stono  阅读(327)  评论(0编辑  收藏  举报