Struts2导出Excel

原创 2013年12月06日 10:40:24

//这Action里的java代码

@SuppressWarnings("unchecked")

    public String createExcelLength() throws IOException,
            InvocationTargetException {
        System.out.println(inputStream);
        List<Map> list = null;
        Map map = new HashMap();// 装载分页函数需要的参数,里边包含每页多少条,第几页,查询条件
        map.put("rows", (rows)); // 放入每页条数
        map.put("page", (this.page)); // 放入当前页码
        map.put("begdate", this.begdate); // 放入开始时间
        map.put("enddate", this.enddate); // 放入结束时间
        map.put("chanelId", this.chanelId); // 放入频道id
        map.put("saleId", this.saleId); // 放入sale_id
        list = amsRemainLengthService.selectAmsMeuInfo(map);
        String columnNameArray = "salename,mon,ty,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31";
        String showNameAry = "销售品名称,月份,类型,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31";
        HSSFWorkbook workbook = new HSSFWorkbook(); // 产生工作簿对象
        HSSFSheet sheet = workbook.createSheet(); // 产生工作表对象
        HSSFFont columnHeadFont = workbook.createFont();
        columnHeadFont.setFontName("宋体");
        columnHeadFont.setFontHeightInPoints((short) 12);
        columnHeadFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
        // 列头的样式
        HSSFCellStyle columnHeadStyle = workbook.createCellStyle();
        columnHeadStyle.setFont(columnHeadFont);
        columnHeadStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 左右居中
        columnHeadStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
        // 设置第一个工作表的名称为firstSheet
        // 为了工作表能支持中文,设置字符编码为UTF_16
        workbook.setSheetName(0, "firstSheet");
        // 产生一行
        HSSFRow row = sheet.createRow((short) 0);
        String[] showNameArray = showNameAry.split(",");
        // 产生第一个单元格
        for (int i = 0; i < showNameArray.length; i++) {
            HSSFCell cell = row.createCell(i);
            // 设置单元格内容为字符串型
            cell.setCellType(HSSFCell.CELL_TYPE_STRING);
            cell.setCellValue(showNameArray[i]);
        }
        // 为了能在单元格中写入中文,设置字符编码为UTF_16。
        // cell.setEncoding(HSSFCell.ENCODING_UTF_16);
        int rowNum = 1;
        // 循环往单元格中写入信息
        // 根据数据库里面返回的list的size循环创建行
        for (int i = 0; i < list.size(); i++) {
            Map mapData = list.get(i);
            HSSFRow row1 = sheet.createRow((short) rowNum);
            String[] aaaa = columnNameArray.split(",");
            for (int j = 0; j < 34; j++) {
                HSSFCell cell1 = row1.createCell(j);
                if (mapData.get("fl").equals("0")) {
                    // 设置单元格内容为字符串型
                    cell1.setCellType(HSSFCell.CELL_TYPE_STRING);
                    if (mapData.containsKey(aaaa[j])) {
                        cell1.setCellValue(mapData.get(aaaa[j]).toString());
                    } else {
                        cell1.setCellValue("");
                    }
                } else {
                    if (mapData.containsKey(aaaa[j])) {
                        Font font = workbook.createFont();
                        font.setColor(HSSFColor.RED.index);
                        columnHeadStyle.setFont(font);
                        cell1.setCellStyle(columnHeadStyle);
                        // 设置单元格内容为字符串型
                        cell1.setCellType(HSSFCell.CELL_TYPE_STRING);
                        cell1.setCellValue(mapData.get(aaaa[j]).toString());
                        
                    } else {
                        cell1.setCellValue("");
                    }

                }


在struts2.


            }
            rowNum += 1;
        }
        this.filename = "AmsRemainLength.xls";
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        System.out.println("aa");
        try {
            workbook.write(outputStream);
            inputStream = new ByteArrayInputStream(outputStream.toByteArray());
            outputStream.flush();
            outputStream.close();
            return "excel";
        } catch (Exception e) {
            e.printStackTrace();
            return "excel";
        }

    }

在struts2.xml里面的配置

            <result name="excel" type="stream">
                <!-- 指定下载文件的内容类型,text/plain是默认类型 -->
                <param name="contentType">text/plain</param>
                <!--
                    inputName默认值是inputStream,如果action中用于读取下载文件内容的属性名是inputStream,那么可以省略这个参数
                -->
                <param name="inputName">inputStream</param>
                <!--动态获取文件名,从Action中的取得filename-->
                <param name="contentDisposition">
                    attachment;filename="${filename}"
                </param>
                <param name="bufferSize">2048</param>
            </result>


备注:导入的excel文件必须是microsoft 的office。不能用WPS的(WPS的excel不能读取)


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

struts2中利用poi导出excel

  • 2013年03月07日 12:35
  • 5.62MB
  • 下载

Struts2 Excel导入导出数据

  • 2011年10月05日 00:01
  • 14.34MB
  • 下载

Struts2+Poi实现导出excel功能

今天,客户需要添加一个功能,导出数据,开始想到导出word文件,后来搜索poi的相关内容后,了解到Poi对word支持不是很好,听说是项目组成员走了不少,看到几个导出word使用itext比较好,一想...

Java Struts2+poi插件 实现导出Excel

  • 2016年07月21日 16:28
  • 877KB
  • 下载

struts2+poi实现excel文件的导出

  • 2014年01月14日 16:15
  • 20KB
  • 下载

【SSH】利用struts2 特性 导出excel

1、struts.xml配置 application/vnd.ms-excel ...
  • yjqyyjw
  • yjqyyjw
  • 2016年06月20日 17:57
  • 2142

struts2+poi 实现Excel导出

  • 2012年04月21日 00:18
  • 19.7MB
  • 下载

struts2+poi实现excel表格导出

  • 2012年04月23日 22:13
  • 355KB
  • 下载

struts2结合poi导出excel

【转】struts2结合poi导出excel(二) 先看效果图: 第一步: 第二步:点击导出内容到excel 第三步:点击上图的“选择”按钮 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Struts2导出Excel
举报原因:
原因补充:

(最多只允许输入30个字)