java中使用poi结合Struts 2来导出execl表格

第一步写action方法:

public String exportActiveExcel()
  {
      String name ="活跃度列表.xls";
      try {
              name = java.net.URLEncoder.encode(name, "UTF-8");
              fileName = new String(name.getBytes(), "iso-8859-1");
      } catch (UnsupportedEncodingException e) {
          e.printStackTrace();
      }
      return "success";
  }

fileName 为类变量要生成get和set方法,作为文件的名称

第二步把数据写入到一个流里:

public InputStream getInputStream()
   {
    // 测试学生
       ExportExcel ex = new ExportExcel();
       String[] headers = {"学号", "姓名", "年龄", "性别", "出生日期"};
       JSONArray array=new JSONArray();
       JSONArray arr=new JSONArray();
       arr.add(10000001);
       arr.add("张三");
       arr.add(20);
       arr.add(true);
       arr.add("2013-5-6");
       JSONArray arr1=new JSONArray();
       arr1.add(10000002);
       arr1.add("李四");
       arr1.add(24);
       arr1.add(false);
       arr1.add("2013-5-6");
       array.add(arr);
       array.add(arr1);
       return  ex.exportExcel("活跃度分析",headers, array);
   }

用到的类:

public class ExportExcel
{

    @SuppressWarnings("deprecation")
    public InputStream exportExcel(String title, String[] headers, JSONArray array)
    {
        // 声明一个工作薄
        HSSFWorkbook workbook = new HSSFWorkbook();
        // 生成一个表格
        HSSFSheet sheet = workbook.createSheet(title);
        // 设置表格默认列宽度为15个字节
        sheet.setDefaultColumnWidth((short) 30);
        // 生成一个标题样式
        HSSFCellStyle titleStyle = workbook.createCellStyle();
        // 设置这些样式
        titleStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
        titleStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        titleStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        titleStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
        titleStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
        titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        // 生成一个标题字体
        HSSFFont font = workbook.createFont();
        font.setColor(HSSFColor.VIOLET.index);
        font.setFontHeightInPoints((short) 12);
        font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
        // 把字体应用到当前的样式
        titleStyle.setFont(font);
        // 生成内容样式
        HSSFCellStyle contentStyle = workbook.createCellStyle();
        contentStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
        contentStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        contentStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        contentStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);
        contentStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);
        contentStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
        contentStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
        // 生成内容字体
        HSSFFont contentFont = workbook.createFont();
        contentFont.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
        // 把字体应用到当前的样式
        contentStyle.setFont(contentFont);
        // 产生表格标题行
        HSSFRow row = sheet.createRow(0);
        for (short i = 0; i < headers.length; i++)
        {
            HSSFCell cell = row.createCell(i);
            cell.setCellStyle(titleStyle);
            HSSFRichTextString text = new HSSFRichTextString(headers[i]);
            cell.setCellValue(text);
        }
        //生成内容行
        for (int i = 0; i < array.size(); i++)
        {
            row = sheet.createRow(i+1);
            JSONArray arr=(JSONArray) array.get(i);
            for (int j = 0; j < arr.size(); j++)
            {
                HSSFCell cell = row.createCell(j);
                cell.setCellStyle(contentStyle);
                HSSFRichTextString richString = new HSSFRichTextString(arr.get(j).toString());
                HSSFFont font3 = workbook.createFont();
                font3.setColor(HSSFColor.BLUE.index);
                richString.applyFont(font3);
                cell.setCellValue(richString);
            }
        }
        //写入输出流
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        try
        {
            workbook.write(baos);// 写入
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
        byte[] ba = baos.toByteArray();
        ByteArrayInputStream bais = new ByteArrayInputStream(ba);
        try
        {
            baos.close();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
        return bais;
    }
}

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/Java/

第三步配置struts.xml文件

<action name="exportActiveExcel" class="activeCountAction"
 method="exportActiveExcel">
 <result name="success" type="stream">
  <param name="contentType">application/vnd.ms-excel</param>
  <param name="contentDisposition">attachment;filename="${fileName}"</param>
  <param name="inputName">inputStream</param>
  <param name="bufferSize">4096</param>
 </result>
</action>

inputName的值要与流的方法一致,生成getXxxxx,不然找不到方法

在页面上直接调用action方法的路径

<input type="button" value="数据导出" onclick="javascript:window.location.href='exportActiveExcel';" />

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索poi
, poi ppt background
, jsonarray
, add
, java poi 导出excel
, arr
, 生成
, poi导出Excel
, poi导入导出
, 生成execl
, Execl导出
jsonarray使用
struts2 poi导出excel、struts2 poi导入excel、struts2与poi下载文件、poi导出excel、java poi 导出excel,以便于您获取更多的相关知识。

时间: 2024-10-31 16:45:08

java中使用poi结合Struts 2来导出execl表格的相关文章

java中使用poi导出Excel,在2003版Excel中乱码的问题,求大神解答

问题描述 java中使用poi导出Excel,在2003版Excel中乱码的问题,求大神解答 问题如下.在系统中使用poi导出Excel,在别人的电脑上2010版的Excel中可以正常打开,在我本人电脑上的2003打开就是乱码,一开始查找资料是poi的jar包版本问题.系统上的poi jar包是3.0.整个系统的jar包不敢乱更换,所以只能别的方式修改.在Action中有转码语句: res.setHeader("Content-disposition", "attachmen

ASP.NET中使用开源组件NPOI快速导入导出Execl数据_实用技巧

相信很多童鞋都开发过Execl的导入导出功能,最近产品中无论是后台数据分析的需要,还是前端满足用户管理的方便,都有Execl导入导出的维护需求产生. 以前做这个功能,如果是web,利用HttpContext.Current.Response.ContentType ="application/ms-excel";就可以导出html数据表格到execl中,这种方法的问题就是编码格式的兼容性太差,用Mac OS之类的 office打开直接乱码给你看.或者是调用office的COM组件,或宏

关于java中导出excel的问题 POI

问题描述 关于java中导出excel的问题 POI 怎样才能实现将excel表格中的单元格中的汉字样式导出来,不是标题,而是普通单元格,比如我在某个单元格中设置了字体加粗,怎么实现导出的excel中这个字体也是加粗的. 解决方案 // 生成一个样式 HSSFCellStyle style = workbook.createCellStyle(); // 设置这些样式 style.setFillForegroundColor(HSSFColor.SKY_BLUE.index); style.se

poi.jar操作excel,在java中可以。android上就不行了,求大神看看,谢谢!急等

问题描述 poi.jar操作excel,在java中可以.android上就不行了,求大神看看,谢谢!急等 在java中可以.移植到android上就不行了. 这个是在android中运行报的错误. 解决方案 真心不知道怎么弄..然后就果断用jxl.jar了...哎... 解决方案二: 大神们,帮忙看看.谢谢啦...真心急等..

java中使用Struts 2框架上传文件代码

HTML表单默认值:  代码如下 复制代码 <form action="" enctype="application/x-www-form-urlencoded" method="get"> ...</form> 要使用HTML表单上传文件,需要将HTML表单的enctype属性设置为"multipart/form-data",还需要将表单的method属性设置为"post"  代码

Java中导入、导出Excel

原文:Java中导入.导出Excel 一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际的开发中,很多时候需要实现导入.导出Excel的应用. 目前,比较常用的实现Java导入.导出Excel的技术有两种Jakarta POI和Java Excel 下面我就分别讲解一下如何使用这两个技术实现导入.导出Excel 二.使用Jakarta POI导入.

java 使用 Apache POI批量导入导出excel教程及实例

一.定义 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 二.所需jar包:   三.简单的一个读取excel的demo 1.读取文件方法      /**      * 读取出filePath中的所有数据信息      * @param filePath excel文件的绝对路径      *       */          public static void getDataFromEx

java导出-请问在java中做导出的时候应该怎么实现下拉列表框

问题描述 请问在java中做导出的时候应该怎么实现下拉列表框 这里我给出了我的java源码 望各位大神仔细看看 小弟在此谢谢了 下面这段代码实现的效果是这样 而我想实现的效果是这样的 如图 在计价方式那 有3个选项 可以进行下拉选择的 ```ruby #这里可以指定高亮语言类型# package com.devsun.action.pm.room; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell; impo

java中excel数据写入数据库

问题描述 java中excel数据写入数据库 java中excel数据写入数据库 : 通过上传excel同时把里面数据写入数据库.struts框架 源码,急用 解决方案 http://www.cnblogs.com/hongten/archive/2012/02/22/java2poi.html 解决方案二: 需要导入jxl.jar (在网上可以下载,然后放到lib文件夹中) 通过java操作excel表格的工具类库 支持Excel 95-2000的所有版本 生成Excel 2000标准格式 支