使用POI生成excel,然后直接生成流文件,前台页面直接弹出下载窗口,不需要先生成excel文本再下载,省时省力
ApachePOI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对MicrosoftOffice格式档案读和写的功能。.NET的开发人员则可以利用NPOI(POIfor.NET)来存取POI的功能。
poi导出excel基本步骤
第一步:引入所需的jar在工程项目lib目录下。
第二步:在点击导出页面设置一个事件触发servlet读出事先保存好的xsl文件;
<scripttype="text/javascript"charset="UTF-8"
functionexcel(){
window.location="exportExcel";?//“exportExcel”是一个servlet地址
}
</script
<inputtype="button"value="导出excel"onclick="excel()"
第三步:实现servlet
packagecom.zust.servlet;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.IOException;
importjava.io.OutputStream;
importjava.io.PrintWriter;
importjava.util.List;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importcom.zust.excel.*;
importcom.zust.paper.Paper;
publicclassexportExcelextendsHttpServlet{
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
this.doPost(request,response);
}
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
//获得项目服务器根路径
Stringpath=request.getSession().getServletContext().getRealPath("");
//把所有的路径的单斜杠替换成双斜杠
path=path.replace("\\","//");
gradesXLSxls=newgradesXLS(path);
List<Paperlist=(List<Paper)request.getSession().getAttribute("paperLit");
Booleanflag=?xls.CreateExcel(list);
OutputStreamo=response.getOutputStream();
byteb[]=newbyte;
//thefiletodownload.
FilefileLoad=newFile(path,"grades.xls");
//thedialogboxofdownloadfile.
response.setHeader("Content-disposition","attachment;filename="+"grades.xls");
//settheMIMEtype.
response.setContentType("application/vnd.ms-excel");
//getthefilelength.
longfileLength=fileLoad.length();
Stringlength=String.valueOf(fileLength);
response.setHeader("Content_Length",length);
//downloadthefile.
FileInputStreamin=newFileInputStream(fileLoad);
intn=0;
while((n=in.read(b))!=-1){
o.write(b,0,n);
}
}
}
第四部:servlet调用的方法:xls.CreateExcel(list);
packagecom.zust.excel;
importjava.io.File;
importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.util.List;
importorg.apache.poi.hssf.usermodel.HSSFCell;
importorg.apache.poi.hssf.usermodel.HSSFRow;
importorg.apache.poi.hssf.usermodel.HSSFSheet;
importorg.apache.poi.hssf.usermodel.HSSFWorkbook;
importcom.zust.paper.Paper;
publicclassgradesXLS{
privateStringpath;
//构造函数获取保存excel的路径
publicgradesXLS(Stringpath){
this.path=path;
}
publicBooleanCreateExcel(ListpaperList){
Booleanflag=true;
//创建一个工作簿
HSSFWorkbookworkBook=newHSSFWorkbook();
//创建一个工作表,名为:第一页
HSSFSheetsheet=workBook.createSheet("成绩表");
//设置单元格的宽度(0:表示第一行的第一个单元格,1:第一行的第二个单元格)
sheet.setColumnWidth((short)0,3500);
sheet.setColumnWidth((short)1,5000);
sheet.setColumnWidth((short)2,5000);
//创建一个单元格,从0开始
HSSFRowrow=sheet.createRow((short)0);
//构造一个数组设置第一行之后的单元格
HSSFCellcell[]=newHSSFCell;
for(inti=0;i<5;i++){
cell[i]=row.createCell(i);
}
cell.setCellValue("用户名");
cell.setCellValue("开始时间");
cell.setCellValue("结束时间");
cell.setCellValue("集体编号");
cell.setCellValue("总分");
//获得从数据库中查询出来的数据
if(paperList!=null&&paperList.size()0){
//循环list中的数据
for(inti=0;i<paperList.size();i++){
Paperp=(Paper)paperList.get(i);
HSSFRowdataRow=sheet.createRow(i+1);
HSSFCelldata[]=newHSSFCell;
for(intj=0;j<5;j++){
data[j]=dataRow.createCell(j);
}
data.setCellValue(p.getUsername());
data.setCellValue(p.getStarttime());
data.setCellValue(p.getEndtime());
if(p.getGroupno()!=-1){
data.setCellValue(p.getGroupno());
}else{
data.setCellValue("无");
}
data.setCellValue(p.getTotal());
try{
//输出成XLS文件
Filefile=newFile(path);
FileOutputStreamfos=newFileOutputStream(file+"\\grades.xls");
//写入数据,并关闭文件
workBook.write(fos);
fos.close();
}catch(FileNotFoundExceptione){
e.printStackTrace();
flag=false;
}catch(IOExceptione){
e.printStackTrace();
flag=false;
}
}
}
returnflag;
}
}
Tags:Excel.
小编点评:BAOJoint脚本是一款为AE用.
下载小编点评:简易脚本录制是一款简单易用的键鼠脚.
下载小编点评:京东拍到家电脑版是京东为阿宅们退出的一款神.
下载小编点评: 实用小工具,单个文件加解密助手
下载小编点评:IcecreamPasswordM.
下载小编点评:五一劳动节黑板报素材资料是一份五一劳动.
下载小编点评:WinMendFileSplitter是一.
下载小编点评:比如输入我的电脑,按开始监测后别人就.
下载小编点评:魔法门的纷争1.78正式版是对抗地图魔法门的纷争.
下载小编点评:软件介绍一款可以实现GBK与UTF批.
下载小编点评:软件介绍SETE批量打印是一款工程文件批量打.
下载小编点评:软件介绍蜗牛数学二年级小学一至二年.
下载小编点评:软件介绍“伊特进销存软件”是面向中.
下载EasyBoot启动易(启动光盘制作)V6.6.0.800简体中文版下载
商贸财神医疗器材进销存软件2015下载
Nidesoft iTunes Converter V2.4.46下载
一点通票据打印软件V6.1.0.0下载
起飞服务器V1.0.0下载
Gilisoft Video Watermark Removal Tool下载-视频水印删除工具 v2020.02.22 中文版
口袋物流app下载-口袋物流 v1.9.3 安卓版
华油车联app下载-华油车联 v1.0.162 安卓版
果盘挂江湖手游下载-挂江湖果盘版下载v1.10 安卓版
我的门派试玩版下载-我的门派测试服下载v1.1.5 安卓官方版
旋转迷宫3d手机版下载-旋转迷宫3d游戏下载v2.0.4 安卓版
三国打boss游戏-三国打boss官方版(暂未上线)v1.0 安卓版
神创大陆小米版下载-神创大陆小米客户端下载v1.0.50 安卓最新版