程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java中使用poi結合Struts 2來導出execl表格

java中使用poi結合Struts 2來導出execl表格

編輯:關於JAVA

第一步寫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;
    }
}

查看本欄目

第三步配置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';" />

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved