您的位置:首页 > 其它

利用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";

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: