首页 > 代码库 > 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方式)