struts2中将jsp table中的数据导出到excel表格中

struts2中将jsp table中的数据导出到excel表格中

近日,在做一个练习,将jsp的table中显示的数据导出到excel表格中(数据来自数据库),项目使用SSH框架,jsp页面有一个连接,连接到后台一个action,该action负责把数据写入excel文件。

相关代码如下:


//jsp连接
<a href="exportDataToExcel">导出数据</a>
//struts2 action配置
 <action name="exportDataToExcel" class="com.petstore.action.ExportDataToExcel"
            method="exportData">
            <result name="data">/</result>
 </action>
//action代码

public class ExportDataToExcel extends ActionSupport {
    List<Log> logList = null;

    public String exportData() {

        Map<String, Object> session = ActionContext.getContext().getSession();
        logList = (List<Log>) session.get("logList");
        HttpServletResponse response = ServletActionContext.getResponse();

        // 创建工作表
        WritableWorkbook book = null;
        // response.reset();
        // 创建工作流
        OutputStream os = null;
        try {
            // 设置弹出保存对话框
            response.setContentType("application/x-msdownload");
           
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmmss");
            //文件名,以当前秒为文件名
            String fileName = sdf.format(new Date());
            response.setHeader("Content-Disposition", "attachment; filename="
                    + fileName + ".xls");// 设置生成的文件名字
            os = response.getOutputStream();

            // 初始化工作表
            book = Workbook.createWorkbook(os);

        } catch (IOException e1) {
            e1.printStackTrace();
        }
        try {
           
            WritableSheet sheet = book.createSheet("日志信息", 0);
            
            // 字段名
            sheet.addCell(new jxl.write.Label(0, 0, "日志ID"));
            sheet.addCell(new jxl.write.Label(1, 0, "用户姓名"));
            sheet.addCell(new jxl.write.Label(2, 0, "用户IP"));
            sheet.addCell(new jxl.write.Label(3, 0, "请求路径"));
            sheet.addCell(new jxl.write.Label(4, 0, "是否登录"));
            sheet.addCell(new jxl.write.Label(5, 0, "请求时间"));
            // 添加数据
            for (int i = 1; i < logList.size(); i++) {

                sheet.addCell(new jxl.write.Label(0, i, logList.get(i)
                        .toString()));
                sheet.addCell(new jxl.write.Label(1, i, logList.get(i)
                        .getUsername()));
                sheet
                        .addCell(new jxl.write.Label(2, i, logList.get(i)
                                .getIp()));
                sheet
                        .addCell(new jxl.write.Label(3, i, logList.get(i)
                                .getUrl()));
                sheet.addCell(new jxl.write.Label(4, i, logList.get(i)
                        .getIsSuccess()));
                sheet.addCell(new jxl.write.Label(5, i, logList.get(i)
                        .getDate()));

            }
            book.write();
            book.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

        return "data";

    }

}
 

结果如图


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值