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="<%=basePath%>/auContract/downloanExcel" class="easyui-linkbutton"data-options="plain:'true',iconCls:'icon-down'">下载Excel</a> //可以直接通过a标签的href直接连接到action中的url映射地址
Java浏览器下载文件为excel(springMVC方式)的更多相关文章
- asp.net 浏览器下载文件的四种方式
// 方法一:TransmitFile实现下载 protected void Button1_Click(object sender, EventArgs e) { Response.ContentT ...
- 【文件下载】Java下载文件的几种方式
[文件下载]Java下载文件的几种方式 摘自:https://www.cnblogs.com/sunny3096/p/8204291.html 1.以流的方式下载. public HttpServl ...
- Asp.Net 下载文件的几种方式
asp.net下载文件几种方式 protected void Button1_Click(object sender, EventArgs e) { /* 微软为Response对象提供了一个新的方法 ...
- java读取XML文件的四种方式
java读取XML文件的四种方式 Xml代码 <?xml version="1.0" encoding="GB2312"?> <RESULT& ...
- Microsoft Edge浏览器下载文件乱码修复方法(二)
之前有写过"Microsoft Edge浏览器下载文件乱码修复方法",发现很多情况下下载文件乱码问题还是存在,这里对之前内容做简单补充,希望可以帮到大家. 方法二: 默认如果提示下 ...
- 从后端接口下载文件的2种方式:get方式、post方式
从后端接口下载文件的2种方式 一.get方式 直接使用: location.href='http://www.xxx.com/getFile?params1=xxx¶ms2=xxxx' ...
- 火狐浏览器下载文件中文乱码,文件名中的空格变加号("+")的问题
解决一下问题: 1.火狐浏览器下载文件,中文变乱码 2.IE浏览器下载文件,丢失文件扩展名或强制扩展名为".txt" 3.浏览器下载文件,文件名中的空格变成加号("+&q ...
- 在Linux终端使用W3M浏览器下载文件
在Linux终端使用W3M浏览器下载文件 W3M 是3个基于Linux系统命令行的WEB网站浏览工具(w3m/Links/Lynx) 对于需要验证cookie 和来源的页面,比如163的超大附件,直接 ...
- IE浏览器下载文件保存时提示:“你没有权限在此位置中保存文件”解决办法
E浏览器下载文件保存时提示 解决办法: 1.Win + R,打开运行命令,输入gpedit.msc,如图所示 2.打开计算机本地组策略编辑器:选择计算机配置-windows设置-安全设置-本地策略-安 ...
随机推荐
- poj 2719 Faulty Odometer
Description You are given a car odometer which displays the miles traveled as an integer. The odomet ...
- div靠右浮动案例
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- THUPC2019划水记
虽然早就打不动了,虽然一个队友提前说好跑路了,还是两个人来玩了玩.最大的失误是没有开场打模拟题,然后就没骗到钱,还是要向某一心骗钱不顾排名的队伍学习.这次的模拟题超简单,很愉快地就打完了,也没调多久, ...
- AI-Info-Micron-Insight:Intelligence Accelerated™
ylbtech-AI-Info-Micron-Insight:Intelligence Accelerated™ Intelligence Accelerated™ Micron Insight 大会 ...
- AI-Info-Micron-Insight:将您的游戏技能变成一份工作
ylbtech-AI-Info-Micron-Insight:将您的游戏技能变成一份工作 1.返回顶部 1. 将您的游戏技能变成一份工作 听起来不现实? 一位来自著名商学院的教授不这么认为.他认为,金 ...
- 排名Top 16的Java实用类库
(转载: http://www.hollischuang.com/archives/1606) github地址: https://github.com/liufeiSAP/javaStudy.git ...
- sum(sum(abs(y))) 中 sum(sum())什么意思?
>> y=[1 3;2 5] y = 1 3 2 5 >> sum(y) ans = 3 8 >> sum(s ...
- Docker入门(五):Swarms
这个<Docker入门系列>文档,是根据Docker官网(https://docs.docker.com)的帮助文档大致翻译而成.主要是作为个人学习记录.有错误的地方,Robin欢迎大家指 ...
- 项目清理和删除svn信息(转)
svn信息是根据文件夹里面的 .svn 文件夹保存相关配置的,删除此文件夹即可去掉svn信息: linux下: find . -type d -name ".svn"|xargs ...
- [hdu2063]过山车(二分图匹配)
题意:每个女人有感兴趣的k个男人,过山车两人一组,求最大匹配数. 解题关键:二分图最大匹配.匈牙利算法求解. 1.链式前向星建图 #include<cstdio> #include< ...