java导出excel 浏览器直接下载或者或以文件形式导出

看代码吧~

/**
 * excel表格直接下载
 */
public static void exportExcelByDownload(HSSFWorkbook wb,HttpServletResponse httpServletResponse,String fileName) throws Exception {
    //响应类型为application/octet- stream情况下使用了这个头信息的话,那就意味着不想直接显示内容
    httpServletResponse.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
    //attachment为以附件方式下载
    httpServletResponse.setHeader("Content-Disposition","attachment;filename=" + URLEncoder.encode(
            fileName + ".xls",
            "utf-8"));
    /**
     * 代码里面使用Content-Disposition来确保浏览器弹出下载对话框的时候。
     * response.addHeader("Content-Disposition","attachment");一定要确保没有做过关于禁止浏览器缓存的操作
     */
    httpServletResponse.setHeader("Cache-Control", "No-cache");
    httpServletResponse.flushBuffer();
    wb.write(httpServletResponse.getOutputStream());
    wb.close();
}
/**
 * excel以文件的形式导出
 * @throws Exception
 */
public static void exportExcelByFile(HSSFWorkbook wb,String fileName,String path) throws Exception{
    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    wb.write(stream);
    FileOutputStream outputStream = new FileOutputStream(path + fileName);
    outputStream.write(stream.toByteArray());
    stream.close();
    outputStream.close();
}

java查询数据导出excel并返回给浏览器下载

效果图:

1.点击导出表按钮

2.接着就会出现下图

3.点击上图中的确定按钮再接着就会出现下图

4.点击上图中的保存按钮接着就会出现下图,浏览器下载完成后的提示

5.打开下载好的文件如下图

好了,废话不多少,上代码

jsp前端代码

<div style="height:30px;">
	<a>时间:</a>
        <input id="startDateConsume" type="text" class="easyui-datebox"> <a>-</a>
        <input id="endDateConsume" type="text" class="easyui-datebox">
        <a>消费类型:</a>
       <select id="consumesType" name="">
	<option value="0" selected="selected">所有</option>
	<option value="1">报名费</option>
	<option value="2">酒水零食类</option>
	</select>
        <a>支付状态:</a>
       <select id="conPaymentStatus" name="">
	<option value="0" selected="selected">所有</option>
	<option value="1">未支付</option>
	<option value="2">已支付</option>
	</select>
        <a id="btnConsumesSearch" class="easyui-linkbutton"
	data-options="iconCls:'icon-search'" style="margin-left:10px">查询</a><a>(查询出来的数据可统计)</a>
	<a id="consumesOutExcel" class="easyui-linkbutton" style="" data-options="iconCls:'icon-redo'">导出表</a>
</div>

js前端代码

$(function() {
	//导出excel表
	$('#consumesOutExcel').on('click',function(){
		exportExcel();
	});
});

function exportExcel() {
		$.messager.confirm('确认', '确认把该搜索结果导出Excel表格 ?', function(r) {
		if (r) {
			var startTime = $('#startDateConsume').val();
			var endTime = $('#endDateConsume').val();
			var consumesType = $('#consumesType').val();
			var conPaymentStatus = $('#conPaymentStatus').val();
			$.messager.progress({
				title : '处理中',
				msg : '请稍后',
			});
			$.messager.progress('close');
			location.href="web/vip/exportExcel.xlsx?startTime=" rel="external nofollow" +startTime+"&endTime="+endTime+"&consumesType="+consumesType+"&conPaymentStatus="+conPaymentStatus;
		}
	});
} 

java后端代码

@Controller
@RequestMapping("/vip")
public class VipController {
	//文件下载:导出excel表
	@RequestMapping(value = "/exportExcel.xlsx",method = RequestMethod.GET)
	@ResponseBody
	public void exportExcel(HttpServletRequest request,HttpServletResponse response) throws UnsupportedEncodingException{
		//一、从后台拿数据
			if (null == request || null == response)
			{
				return;
			}
			List<VipConsumes> list = null;
			String startTime = request.getParameter("startTime");
			String endTime = request.getParameter("endTime");
			int consumesType = Integer.parseInt(request.getParameter("consumesType"));
			int conPaymentStatus =Integer.parseInt(request.getParameter("conPaymentStatus"));

			VipConsumesExample example = new VipConsumesExample();
			if(consumesType!=0 && conPaymentStatus!=0){
				example.createCriteria().andTimeBetween(startTime, endTime).andConsumeTypeEqualTo(consumesType).andStatusEqualTo(conPaymentStatus);
			}else if(consumesType ==0 && conPaymentStatus!=0) {
				example.createCriteria().andTimeBetween(startTime, endTime).andStatusEqualTo(conPaymentStatus);
			}else if(consumesType!=0 && conPaymentStatus==0){
				example.createCriteria().andTimeBetween(startTime, endTime).andConsumeTypeEqualTo(consumesType);
			}else {
				example.createCriteria().andTimeBetween(startTime, endTime);
			}
            list = this.vipConsumesDao.selectByExample(example);
			//二、 数据转成excel
    		request.setCharacterEncoding("UTF-8");
    		response.setCharacterEncoding("UTF-8");
    		response.setContentType("application/x-download");

    		String fileName = "消费记录.xlsx";
    		fileName = URLEncoder.encode(fileName, "UTF-8");
    		response.addHeader("Content-Disposition", "attachment;filename=" + fileName);
            // 第一步:定义一个新的工作簿
    		XSSFWorkbook wb = new XSSFWorkbook();
    		// 第二步:创建一个Sheet页
    		XSSFSheet sheet = wb.createSheet("startTimeendTime");
    		sheet.setDefaultRowHeight((short) (2 * 256));//设置行高
    		sheet.setColumnWidth(0, 4000);//设置列宽
    		sheet.setColumnWidth(1,5500);
    		sheet.setColumnWidth(2,5500);
    		sheet.setColumnWidth(3,5500);
    		sheet.setColumnWidth(11,3000);
    		sheet.setColumnWidth(12,3000);
    		sheet.setColumnWidth(13,3000);
    		XSSFFont font = wb.createFont();
    		font.setFontName("宋体");
    		font.setFontHeightInPoints((short) 16);

    		XSSFRow row = sheet.createRow(0);
    		XSSFCell cell = row.createCell(0);
    		cell.setCellValue("流水号 ");
    		cell = row.createCell(1);
    		cell.setCellValue("微信名 ");
    		cell = row.createCell(2);
    		cell.setCellValue("微信订单号");
    		cell = row.createCell(3);
    		cell.setCellValue("消费时间");
    		cell = row.createCell(4);
    		cell.setCellValue("消费类型");
    		cell = row.createCell(5);
    		cell.setCellValue("剩余积分 ");
    		cell = row.createCell(6);
    		cell.setCellValue("新增积分 ");
    		cell = row.createCell(7);
    		cell.setCellValue("扣除积分 ");
    		cell = row.createCell(8);
    		cell.setCellValue("消费金额");
    		cell = row.createCell(9);
    		cell.setCellValue("支付方式");
    		cell = row.createCell(10);
    		cell.setCellValue("支付状态 ");
    		cell = row.createCell(11);
    		cell.setCellValue("钱包原始金额");
    		cell = row.createCell(12);
    		cell.setCellValue("钱包扣除金额");
    		cell = row.createCell(13);
    		cell.setCellValue("钱包剩余金额");

    		XSSFRow rows;
    		XSSFCell cells;
    		for (int i = 0; i < list.size(); i++) {
    			// 第三步:在这个sheet页里创建一行
    			rows = sheet.createRow(i+1);
    			// 第四步:在该行创建一个单元格
    			cells = rows.createCell(0);
    			// 第五步:在该单元格里设置值
    			cells.setCellValue(list.get(i).getConsumeId());

    			cells = rows.createCell(1);
    			cells.setCellValue(list.get(i).getName());
    			cells = rows.createCell(2);
    			cells.setCellValue(list.get(i).getOrderNumber());
    			cells = rows.createCell(3);
    			cells.setCellValue(list.get(i).getTime());
    			cells = rows.createCell(4);
    			if (list.get(i).getConsumeType() == 2) {
    				cells.setCellValue("酒水零食费");

    			} else {
    				cells.setCellValue("报名费");
    			}
    			cells = rows.createCell(5);
    			cells.setCellValue(list.get(i).getIntegral());
    			cells = rows.createCell(6);
    			cells.setCellValue(list.get(i).getIntegralIn());
    			cells = rows.createCell(7);
    			cells.setCellValue(list.get(i).getIntegralOut());
    			cells = rows.createCell(8);
    			cells.setCellValue(list.get(i).getMoney());
    			cells = rows.createCell(9);
    			if (list.get(i).getPayment() == 2) {
    				cells.setCellValue("积分抵现");
    			} else if (list.get(i).getPayment() == 3) {
    				cells.setCellValue("微信支付");
    			} else if (list.get(i).getPayment() == 4) {
    				cells.setCellValue("现金");
    			} else if (list.get(i).getPayment() == 1) {
    				cells.setCellValue("钱包");
    			}
    			cells = rows.createCell(10);
    			if (list.get(i).getStatus() == 2) {
    				cells.setCellValue("已支付");
    			} else if (list.get(i).getStatus() == 1) {
    				cells.setCellValue("未支付");
    			}
    			cells = rows.createCell(11);
    			cells.setCellValue(list.get(i).getWalletOriginal());
    			cells = rows.createCell(12);
    			cells.setCellValue(list.get(i).getWalletOut());
    			cells = rows.createCell(13);
    			cells.setCellValue(list.get(i).getWalletSurplus());
    		}

				try {
					OutputStream out = response.getOutputStream();
	    			wb.write(out);
	    			out.close();
	    			wb.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}

	}
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • JavaWeb动态导出Excel可弹出下载

    由于项目需求,需要将数据导出成Excel表格,并且可选择导出项,可下载.项目使用的Spring+Mybatis+SpringMVC框架,利用Apache POI导出Excel.POI具体使用请自行百度.话不多说,上代码. ExportExcelUtil代码 package com.rixin.common.util; import java.io.OutputStream; import java.lang.reflect.Method; import java.net.URLEncoder;

  • JavaWeb导出Excel文件并弹出下载框

    一.引言 在Java Web开发中经常涉及到报表,最近做的项目中需要实现将数据库中的数据显示为表格,并且实现导出为Excel文件的功能. 二.相关jar包 使用POI可以很好的解决Excel的导入和导出的问题,POI下载地址: poi-3.6-20091214.jar 三.关键代码 首先导入上述jar包. 在生成excel时一般数据源形式为一个List,下面把生成Excel格式的代码贴出来: /** * 以下为生成Excel操作 */ // 1.创建一个workbook,对应一个Excel文件

  • java实现导出Excel的功能

    导出excel是咱Java开发的必备技能啦,之前项目有这个功能,现在将其独立出来,分享一下. 所用技术就是SpringBoot,然后是MVC架构模式. 废话不多说,直接上代码了,源码点末尾链接就可以下载. (1)新建一个SpringBoot项目(可以官网https://start.spring.io/直接生成下载,然后导入eclipse),项目结构如下: (2)修改pom文件,添加依赖: <dependency> <groupId>org.springframework.boot&

  • Java数据导出功能之导出Excel文件实例

    在编程中经常需要使用到表格(报表)的处理主要以Excel表格为主.下面给出用java写入数据到excel表格方法: 1.添加jar文件 java导入导出Excel文件要引入jxl.jar包,最关键的是这套API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件.下载地址:http://www.andykhan.com/jexcelapi/ 2.jxl对Excel表格的认识 可以参见:http://www.jb51.net/article/686

  • java导出excel 浏览器直接下载或者或以文件形式导出

    看代码吧~ /** * excel表格直接下载 */ public static void exportExcelByDownload(HSSFWorkbook wb,HttpServletResponse httpServletResponse,String fileName) throws Exception { //响应类型为application/octet- stream情况下使用了这个头信息的话,那就意味着不想直接显示内容 httpServletResponse.setContent

  • Java 如何快速,优雅的实现导出Excel

    前言: 春节假期刚刚过去,大家是不是已经开始了搬砖生活啦,嘻嘻 o(∩_∩)o ,可我还在休假中呢 ! 好啦,咱们言归正传,开始聊聊正文.做过后端管理系统的同学,大概率都会收到过实现 导出Excel 的功能需求,因为这个功能在后台管理系统中是个必备功能. 那大家是怎么实现这个功能的呢? 使用Apache提供POI组件实现: 使用现成的.简便的第三方工具库(避免重复造轮子) Hutool 工具库中的Excel工具类 EasyExcel 阿里开源的基于Java的简单.省内存的读写Excel工具库 接

  • asp.net 利用NPOI导出Excel通用类的方法

    解决中文文件名保存Excel乱码问题,主要是判断火狐或者IE浏览器,然后做对应的判断处理,核心代码如下: System.Web.HttpContext.Current.Response.ContentType = "application/vnd.ms-excel"; //设置下载的Excel文件名\ if (System.Web.HttpContext.Current.Request.ServerVariables["http_user_agent"].ToStr

  • React.js前端导出Excel的方式

    目录 前言 实现方式 csv 与 Excel 的区别 react-csv xlsx cdn 方式 在 react 中使用 json 转 excel 结语 前言 前段时间,项目上有个需求需要将数据报表导出为 excel 的需求,这本来是后端的工作,前端只需要一个 a 标签,就可以下载文件,但不巧的是,正好遇到后端请假,而且项目比较着急,那么前端是否可以实现呢? 实现方式 经过一顿搜索后,发现有这么几个 npm 库 react-csv 根据给定的数据生成 CSV 文件,数据可以是二维数组.对象数组或

  • Springboot使用POI实现导出Excel文件示例

    前面讲述了使用POI导出Word文件和读取Excel文件,这两个例子都相对简单,接下来要讲述的使用POI导出Excel文件要复杂得多,内容也会比较长. 创建表头信息 表头信息用于自动生成表头结构及排序 public class ExcelHeader implements Comparable<ExcelHeader>{ /** * excel的标题名称 */ private String title; /** * 每一个标题的顺序 */ private int order; /** * 说对

  • php导入导出excel实例

    这里实现的PHP导入导出excel功能用到的是开源PHPExcel,执行下面的操作之前请先下载该类库文件,官方网站:http://www.codeplex.com/PHPExcel,官网案例代码很多,导出pdf什么的都有,这里主要介绍PHP导入导出excel的功能,导出excel文件是office2007格式,同时兼容2003. php导入excel导入的excel文件的数据格式,截图如下:下面是将该excel文件的数据导入到数据库的具体代码: 复制代码 代码如下: <?phprequire_o

  • Vue实现导出excel表格功能

    引言: 最近使用vue在做一个后台系统,技术栈 vue + iView ,在页面中生成表格后, iView可以实现表格的导出,不过只能导出csv格式的,并不适合项目需求. 如果想要导出Excel 在src目录下创建一个文件(vendor)进入 Blob.js 和 Export2Excel.js npm install -S file-saver 用来生成文件的web应用程序 npm install -S xlsx 电子表格格式的解析器 npm install -D script-loader 将

  • vue2.0 + element UI 中 el-table 数据导出Excel的方法

    1.安装相关依赖 主要是两个依赖 npm install --save xlsx file-saver 如果想详细看着两个插件使用,请移步github. https://github.com/SheetJS/js-xlsx https://github.com/eligrey/FileSaver.js 2.组件里头引入 import FileSaver from 'file-saver' import XLSX from 'xlsx' 3.组件methods里写一个方法 exportExcel

  • Django Admin中增加导出Excel功能过程解析

    在使用Django Admin时, 对于列表我们有时需要提供数据导出功能, 如下图: 增加导出Excel功能 在Django Admin中每个模型的Admin类(继承至admin.ModelAdmin), 我们可以通过actions增加支持的动作, 值为当前类存在的方法名, 例如: ....... @admin.register(Issue) class IssueAdmin(admin.ModelAdmin): ...... actions = ['export_as_excel'] # 增加

  • Java poi导出Excel下载到客户端

    Java poi 导出Excel并下载到客户端,具体内容如下 Maven配置,包含了其他文件格式的依赖,就全贴出来了 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-excelant</artifactId> <version>3.12</version> </dependency> <dependency> <gr

随机推荐