admin管理员组文章数量:1532656
想把当前页面需要的数据生成excel表,需要先把数据传到后台去,我传的时候用的是json格式数据。主要是方便到时候从中取值,各位就按各自喜好就行了。
//这里是实现类impl里面
//先定义创建excel表头
String[] title={"姓名","性别","年龄"};
//创建excel工作簿
HSSFWorkbook workbook=new HSSFWorkbook();
//创建工作表sheet
HSSFSheet sheet=workbook.createSheet();
//创建第一行,由于表头字段是固定好的,所以第一行的值单独插入就行了
HSSFRow row=sheet.createRow(0);//和数组下标一样,从0开始
HSSFCell cell=null;
//插入第一行数据的表头,用到上面的title数组
for(int i=0;i<title.length;i++){
//createCell(0)表示从左到右第一个空格哈,是依横向次插入的。
cell=row.createCell(i);
cell.setCellValue(title[i]);
}
//此时,excel表的表头部分就完成了。
//现在开始放入内容
//由于之前表头已经占据一行了,所以现在从第二行开始插入
HSSFRow nrow = sheet.createRow(1);
HSSFCell ncell = nrow.createCell(0);
ncell.setCellValue("张三");
ncell = nrow.createCell(1);
ncell.setCellValue("男");
ncell = nrow.createCell(2);
ncell.setCellValue("20");
//至此,就完整的插入一行了。
//插入的方法有很多,循环遍历等等都可以,也是看各自喜好。
以上算是完整的excel内容搭建好了,由于不是创建到本地,所以不把excel写到输出流去创建了。因为我们现在是要用浏览器直接去下载它。
现在继续~~~
//创建一个输出类,response来于方法的参数栏里
//public void createExcel(HttpServletResponse response)throws IOException{}
//因为用到流,所以为了捕获异常需要IOException
//具体的大家可以下来去了解
OutputStream output = response.getOutputStream();
//清空缓存
response.reset();
//定义浏览器响应表头,顺带定义下载名,比如students
response.setHeader("Content-disposition", "attachment;filename=students.xls");
//定义下载的类型,标明是excel文件
response.setContentType("application/vnd.ms-excel");
//这时候把创建好的excel写入到输出流
workbook.write(output);
//养成好习惯,出门记得随手关门
output.close();
以上,就是完整的一套方法,可以让浏览器响应并下载。
需要用到的jar包有 poi-xx.jar,poi-ooxml-xx.jar,用啥版本看自己。
之后还需要注意的是,如果你是前台单纯用ajax传值,你会惊喜的发现完全不起作用哈,原因是说ajax不能传递流,大家可以下来了解下
我的解决方法是:
//方法一:用跳转地址的方式去进行get提交数据,注意后台接收为GET
window.location.href="地址?json="+json
//注意需要先转换编码格式,然后后台再转换回来,因为如果有汉字会乱码
//此方法有局限性,就是不能提交的数据多了
//超出了get提交的长度限制就会报错无法提交,对于post来说则没有限制
//方法二:用post方式提交,需要用到表单form提交方式,后台接收为POST
//我是直接写到body里面然后隐藏的,你们怎么写就随意了
<form action="地址" method="post" style="display:none">
<input type="hidden" name="json" class="json"/>
<input type="submit" id="submit_btn"/>
</form>
//type为hidden的时候,就是是一个隐藏域了,它的值放在value里面。
//现在我们在js里去写一下方法。
var json = "获取你需要生成excel的数据";
//把数据放入value中
$(".json").attr("value",json);
//由于form表单隐藏了,我们要点击submit提交就让它自动激活。
document.getElementById("submit_btn").click();
//这样就可以直接提交到后台。并能够成功让浏览器响应下载。
//后台接收需要HttpServletRequest,接收参数json为表单name名
String json = request.getParameter("json")
//方法三是要引用一个form的js文件,我还没有试过,主要是懒得引用,哈哈
//引用后可以使用ajaxSubmit方法提交,达到浏览器相应目的。
//方法是多种多样的,大家可以下来试试
至此,所有的流程就搞定了,这是浏览器下载excel效果图
如果有更好的方法,欢迎留言。
版权声明:本文标题:java poi创建excel表并引用浏览器下载-实用方法 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1725799737a1043414.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论