首页 > 代码库 > Java浏览器下载文件为excel(springMVC方式)

Java浏览器下载文件为excel(springMVC方式)

     action中的方法

  /**
      * Excel文件下载处理
      * @return
      */
     @RequestMapping("/downloanExcel")  
        public ModelAndView downloanExcel(){  
            List<AuContract> list = new ArrayList<AuContract>();
          
            list= service.findAuContractList();//获得数据库所有的合同集合
            Map<String,List<AuContract>> map = new HashMap<String, List<AuContract>>();  
            map.put("infoList", list);  
            ExcelView ve = new ExcelView();  
            return new ModelAndView(ve,map);  
        } 

excel操作工具类

ExcelView

package com.ekyb.common.auContract.action;

import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.springframework.web.servlet.view.document.AbstractExcelView;

import com.ekyb.common.auContract.entity.AuContract;
import com.ekyb.common.util.CharEncodingEdit;

/**
 * 下载Excel视图
 *
 * @author gx
 */
public class ExcelView extends AbstractExcelView {

    @SuppressWarnings("static-access")
    protected void buildExcelDocument(Map<String, Object> model, HSSFWorkbook workbook, HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        
        @SuppressWarnings("unchecked")
        List<AuContract> list = (List<AuContract>) model.get("infoList");
        
        HSSFFont font=    workbook.createFont();
        font.setFontHeightInPoints((short)12);            //设置字体的大小
        font.setFontName("微软雅黑");                        //设置字体的样式,如:宋体、微软雅黑等
        font.setItalic(false);                            //斜体true为斜体
        font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);    //对文中进行加粗
        font.setColor(HSSFColor.PINK.index);            //设置字体的颜色
        HSSFCellStyle style = workbook.createCellStyle();
        style.setFont(font);
        
        if (list != null && list.size() != 0) {
            int length = list.size();
            Sheet sheet = workbook.createSheet();
        
            // 第一行文字说明
            Row row = sheet.createRow(0);
            Cell cell = row.createCell(0, Cell.CELL_TYPE_STRING);
            cell.setCellStyle(style);    
            cell.setCellValue("合同名称");

            cell = row.createCell(1, Cell.CELL_TYPE_STRING);
            cell.setCellStyle(style);    
            cell.setCellValue("合同单位");

            cell = row.createCell(2, Cell.CELL_TYPE_STRING);
            cell.setCellStyle(style);    
            cell.setCellValue("合同登记时间");
            
            cell = row.createCell(3, Cell.CELL_TYPE_STRING);
            cell.setCellStyle(style);    
            cell.setCellValue("合同金额");

            cell = row.createCell(4, Cell.CELL_TYPE_STRING);
            cell.setCellStyle(style);    
            cell.setCellValue("履行方式");

            cell = row.createCell(5, Cell.CELL_TYPE_STRING);
            cell.setCellStyle(style);    
            cell.setCellValue("合同类型");

            cell = row.createCell(6, Cell.CELL_TYPE_STRING);
            cell.setCellStyle(style);    
            cell.setCellValue("开始时间");

            cell = row.createCell(7, Cell.CELL_TYPE_STRING);
            cell.setCellStyle(style);    
            cell.setCellValue("结束时间");

            cell = row.createCell(8, Cell.CELL_TYPE_STRING);
            cell.setCellStyle(style);    
            cell.setCellValue("备注");

            // 下面是具体内容
            for (int i = 0; i < length; i++) {
                sheet.setColumnWidth((short) i, (short) (35.7 * 100));
                row = sheet.createRow(i + 1);
                // 合同名称
                cell = row.createCell(0, cell.CELL_TYPE_STRING);
                cell.setCellValue(list.get(i).getName());
                // 合同单位
                cell = row.createCell(1, cell.CELL_TYPE_STRING);
                cell.setCellValue(list.get(i).getUnit());

                // 合同登记时间
                cell = row.createCell(2, cell.CELL_TYPE_STRING);
                cell.setCellValue(new SimpleDateFormat("yyyy-mm-dd").format(list.get(i).getReg_time()));

                
                // 合同金额
                cell = row.createCell(3, cell.CELL_TYPE_STRING);
                //把float对象转换为String对象
                float con_money=list.get(i).getCon_money();
                String str =String.valueOf(con_money);
                cell.setCellValue(str);

                // 合同履行方式
                cell = row.createCell(4, cell.CELL_TYPE_STRING);
                cell.setCellValue(list.get(i).getPerform_style());

                // 合同类型
                cell = row.createCell(5, cell.CELL_TYPE_STRING);
                cell.setCellValue(list.get(i).getCon_type());

                // 开始时间
                cell = row.createCell(6, cell.CELL_TYPE_STRING);
                cell.setCellValue(new SimpleDateFormat("yyyy-mm-dd").format(list.get(i).getCon_start_time()));

                // 结束时间
                cell = row.createCell(7, cell.CELL_TYPE_STRING);
                cell.setCellValue(new SimpleDateFormat("yyyy-mm-dd").format(list.get(i).getCon_end_time()));

                // 备注
                cell = row.createCell(8, cell.CELL_TYPE_STRING);
                cell.setCellValue(list.get(i).getRemark());
            }

            //web浏览通过MIME类型判断文件是excel类型
            response.setContentType("application/vnd.ms-excel;charset=utf-8");
            response.setCharacterEncoding("utf-8");

            // 对文件名进行处理。防止文件名乱码
            String fileName = CharEncodingEdit.processFileName(request, "合同.xls");
            // Content-disposition属性设置成以附件方式进行下载
            response.setHeader("Content-disposition", "attachment;filename=" + fileName);
            OutputStream os = response.getOutputStream();
            workbook.write(os);
            os.flush();
            os.close();
        }
    }
}

 

jsp页面代码用的是jQueryUI

<a href="http://www.mamicode.com//auContract/downloanExcel" class="easyui-linkbutton"data-options="plain:‘true‘,iconCls:‘icon-down‘">下载Excel</a>

//可以直接通过a标签的href直接连接到action中的url映射地址

 

Java浏览器下载文件为excel(springMVC方式)