利用jxl将数据导出到excel时弹出保存对话框的例子
2015-07-21 09:06
393 查看
public String outPutExcel(ModelMap model, HttpServletRequest request,
HttpServletResponse response) {
//获取时间区域
String timeArea = request.getParameter("timeArea");
String keyword = request.getParameter("keyword");
String select = request.getParameter("select");
//获取操作类型
String operate = request.getParameter("operate");
// File file = new File("daily.xls");
try {
OutputStream os = response.getOutputStream();// 取得输出流
response.reset();// 清空输出流
response.setHeader("Content-disposition", "attachment; filename="
+ new String("daily".getBytes("GB2312"),
"iso8859_1") + ".xls");// 设定输出文件头
response.setContentType("application/msexcel");// 定义输出类型
WritableWorkbook workbook = Workbook.createWorkbook(os);
if (workbook != null) {
WritableSheet sheet = workbook.createSheet("sheet1", 0);
// 设置标题 sheet.addCell(new jxl.write.Label(列(从0开始), 行(从0开始), 内容.));
try {
sheet.addCell(new Label(0, 0, "区域名"));
sheet.addCell(new Label(1, 0, "所在位置"));
sheet.addCell(new Label(2, 0, "操作人员"));
sheet.addCell(new Label(3, 0, "时间"));
sheet.addCell(new Label(4, 0, "操作类型"));
sheet.addCell(new Label(5, 0, "备注"));
// 设置单元格的宽度
sheet.setColumnView(0, 20);
sheet.setColumnView(1, 40);
sheet.setColumnView(2, 15);
sheet.setColumnView(3, 30);
sheet.setColumnView(4, 15);
sheet.setColumnView(5, 20);
//添加数据
List<SysActionLog> list = this.getSysActionLogs(timeArea, keyword, select,
operate);
SysActionLog log = null;
for (int r = 0; r < list.size(); r++) { //行编号
log = list.get(r);
//区域名
sheet.addCell(new Label(0, r + 1, log.getFilealia()));
//所在位置
sheet.addCell(new Label(1, r + 1, log.getFilename()));
//操作人员
sheet.addCell(new Label(2, r + 1, log.getAuthor()));
//时间
sheet.addCell(new Label(3, r + 1, log.getFormatDate()));
//操作类型
sheet.addCell(new Label(4, r + 1, log.getSysAction().getMessage()));
//备注
sheet.addCell(new Label(5, r + 1, log.getComment()));
}
//从内存中写入文件中
workbook.write();
//关闭资源,释放内存
workbook.close();
/*response.reset();
FileInputStream f = new FileInputStream(file);
byte[] fb = new byte[f.available()];
f.read(fb);
response
.setHeader("Content-disposition", "attachment; filename="
+ new String("daily.xls"
.getBytes("gb2312"), "iso8859-1"));
ByteArrayInputStream bais = new ByteArrayInputStream(fb);
int b;
while ((b = bais.read()) != -1) {
response.getOutputStream().write(b);
}
response.getOutputStream().flush();
//删除服务器上的文件
file.deleteOnExit();*/
} catch (RowsExceededException e) {
logger.error("sheet不存在", e);
} catch (WriteException e) {
logger.error("创建列名出错", e);
}
}
} catch (IOException e) {
logger.error("文件创建出错", e);
}
return "daily.vm";
}
HttpServletResponse response) {
//获取时间区域
String timeArea = request.getParameter("timeArea");
String keyword = request.getParameter("keyword");
String select = request.getParameter("select");
//获取操作类型
String operate = request.getParameter("operate");
// File file = new File("daily.xls");
try {
OutputStream os = response.getOutputStream();// 取得输出流
response.reset();// 清空输出流
response.setHeader("Content-disposition", "attachment; filename="
+ new String("daily".getBytes("GB2312"),
"iso8859_1") + ".xls");// 设定输出文件头
response.setContentType("application/msexcel");// 定义输出类型
WritableWorkbook workbook = Workbook.createWorkbook(os);
if (workbook != null) {
WritableSheet sheet = workbook.createSheet("sheet1", 0);
// 设置标题 sheet.addCell(new jxl.write.Label(列(从0开始), 行(从0开始), 内容.));
try {
sheet.addCell(new Label(0, 0, "区域名"));
sheet.addCell(new Label(1, 0, "所在位置"));
sheet.addCell(new Label(2, 0, "操作人员"));
sheet.addCell(new Label(3, 0, "时间"));
sheet.addCell(new Label(4, 0, "操作类型"));
sheet.addCell(new Label(5, 0, "备注"));
// 设置单元格的宽度
sheet.setColumnView(0, 20);
sheet.setColumnView(1, 40);
sheet.setColumnView(2, 15);
sheet.setColumnView(3, 30);
sheet.setColumnView(4, 15);
sheet.setColumnView(5, 20);
//添加数据
List<SysActionLog> list = this.getSysActionLogs(timeArea, keyword, select,
operate);
SysActionLog log = null;
for (int r = 0; r < list.size(); r++) { //行编号
log = list.get(r);
//区域名
sheet.addCell(new Label(0, r + 1, log.getFilealia()));
//所在位置
sheet.addCell(new Label(1, r + 1, log.getFilename()));
//操作人员
sheet.addCell(new Label(2, r + 1, log.getAuthor()));
//时间
sheet.addCell(new Label(3, r + 1, log.getFormatDate()));
//操作类型
sheet.addCell(new Label(4, r + 1, log.getSysAction().getMessage()));
//备注
sheet.addCell(new Label(5, r + 1, log.getComment()));
}
//从内存中写入文件中
workbook.write();
//关闭资源,释放内存
workbook.close();
/*response.reset();
FileInputStream f = new FileInputStream(file);
byte[] fb = new byte[f.available()];
f.read(fb);
response
.setHeader("Content-disposition", "attachment; filename="
+ new String("daily.xls"
.getBytes("gb2312"), "iso8859-1"));
ByteArrayInputStream bais = new ByteArrayInputStream(fb);
int b;
while ((b = bais.read()) != -1) {
response.getOutputStream().write(b);
}
response.getOutputStream().flush();
//删除服务器上的文件
file.deleteOnExit();*/
} catch (RowsExceededException e) {
logger.error("sheet不存在", e);
} catch (WriteException e) {
logger.error("创建列名出错", e);
}
}
} catch (IOException e) {
logger.error("文件创建出错", e);
}
return "daily.vm";
}
相关文章推荐
- 使用JavaMail发送和接收电子邮件
- word-wrap和word-break
- 井字棋(Tic-Tac-Toe)
- hdu 3756 Dome of Circus 三分
- YTU-OJ-Problem B: 抽象一个形状类
- 一、设计模式之单例模式
- .net常用加密解密方法
- Java 判断两个文件是否相同的两种方法
- 1192 回文字符串
- 士兵杀敌
- 提高iOS开发效率的方法和工具
- asp.net 查询,导出
- Nagios监控平台搭建--安装篇
- iOS-CoreLocation:无论你在哪里,我都要找到你!
- 解决Maven更新后错误Dynamic Web Module 3.0 requires Java 1.6 or newer
- YTU-OJ-Problem A: 最小节点(线性表)
- SQLServer2000同步复制技术实现步骤(代码版)
- shard分片
- ASP.NET定时发送邮件&windows server
- 源码推荐(7.21):顶部滑动菜单FDSlideBar,Swift版无限循环轮播图