一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - JavaWeb導出Excel文件并彈出下載框

JavaWeb導出Excel文件并彈出下載框

2020-05-22 11:16u010844111 JAVA教程

這篇文章主要為大家詳細介紹了JavaWeb導出Excel文件并彈出下載框的相關資料,感興趣的小伙伴們可以參考一下

一、引言

在Java Web開發中經常涉及到報表,最近做的項目中需要實現將數據庫中的數據顯示為表格,并且實現導出為Excel文件的功能。

二、相關jar包

使用POI可以很好的解決Excel的導入和導出的問題,POI下載地址:
poi-3.6-20091214.jar

三、關鍵代碼

首先導入上述jar包。
在生成excel時一般數據源形式為一個List,下面把生成Excel格式的代碼貼出來:

?
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
32
33
34
/**
       * 以下為生成Excel操作
       */
      // 1.創建一個workbook,對應一個Excel文件
      HSSFWorkbook wb = new HSSFWorkbook();
      // 2.在workbook中添加一個sheet,對應Excel中的一個sheet
      HSSFSheet sheet = wb.createSheet("XXX表");
      // 3.在sheet中添加表頭第0行,老版本poi對excel行數列數有限制short
      HSSFRow row = sheet.createRow((int) 0);
      // 4.創建單元格,設置值表頭,設置表頭居中
      HSSFCellStyle style = wb.createCellStyle();
      // 居中格式
      style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
 
      // 設置表頭
      HSSFCell cell = row.createCell(0);
      cell.setCellValue("表頭1");
      cell.setCellStyle(style);
 
      cell = row.createCell(1);
      cell.setCellValue("表頭2");
      cell.setCellStyle(style);
 
      cell = row.createCell(2);
      cell.setCellValue("表頭3");
      cell.setCellStyle(style);
 
      cell = row.createCell(3);
      cell.setCellValue("表頭4");
      cell.setCellStyle(style);
 
      cell = row.createCell(4);
      cell.setCellValue("表頭5");
      cell.setCellStyle(style);

生成excel格式后要將數據寫入excel:

?
1
2
3
4
5
6
7
8
9
10
11
// 循環將數據寫入Excel
      for (int i = 0; i < lists.size(); i++) {
        row = sheet.createRow((int) i + 1);
        List list= lists.get(i);
        // 創建單元格,設置值
        row.createCell(0).setCellValue(list.getXXX());
        row.createCell(1).setCellValue(list.getXXX());
        row.createCell(2).setCellValue(list.getXXX());
        row.createCell(3).setCellValue(list.getXXX());
        row.createCell(4).setCellValue(list.getXXX());
      }

之后將生成的Excel以流輸出。
*不彈出下載框

?
1
2
3
FileOutputStream out =new FileOutputStream("E:/XXX.xls");
wb.write(out);
out.close();

*彈出下載框

 

?
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
32
String fileName = "XXX表";
      ByteArrayOutputStream os = new ByteArrayOutputStream();
      wb.write(os);
      byte[] content = os.toByteArray();
      InputStream is = new ByteArrayInputStream(content);
      // 設置response參數,可以打開下載頁面
      res.reset();
      res.setContentType("application/vnd.ms-excel;charset=utf-8");
      res.setHeader("Content-Disposition", "attachment;filename="
          + new String((fileName + ".xls").getBytes(), "iso-8859-1"));
      ServletOutputStream out = res.getOutputStream();
      BufferedInputStream bis = null;
      BufferedOutputStream bos = null;
 
      try {
        bis = new BufferedInputStream(is);
        bos = new BufferedOutputStream(out);
        byte[] buff = new byte[2048];
        int bytesRead;
        // Simple read/write loop.
        while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
          bos.write(buff, 0, bytesRead);
        }
      } catch (Exception e) {
        // TODO: handle exception
        e.printStackTrace();
      } finally {
        if (bis != null)
          bis.close();
        if (bos != null)
          bos.close();
      }

完成以上操作之后即可跳轉到其他頁面。
同時POI還可以將Excel上傳解析顯示在網頁中,這個另一篇文章總結,敬請期待!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 四虎一区 | 2018久久精品热在线观看 | 99热视| 痴mu动漫成年动漫在线观看 | 亚洲玖玖 | 美女被绑着吸下部的故事 | 天天做天天爱天天一爽一毛片 | 精品一区二区三区高清免费不卡 | 日产乱码卡1卡2卡三卡四在线 | 性色AV一区二区三区V视界影院 | beeg日本高清xxxx18 | 国产一级黄毛片 | 亚洲免费二区 | 日日操日日| 99热精品在线免费观看 | 欧美在线一级视频 | 茄子视频懂你更多apl | 国产成人一区二区三区视频免费蜜 | 久久性生大片免费观看性 | 好硬好大好浪夹得好紧h | 91尤物在线视频 | 青山葵在线 | 亚欧综合 | 成年人免费观看 | 香蕉久久夜色精品国产小优 | 视频在线观看入口一二三2021 | 亚洲视频一| 亚洲 欧美 中文字幕 在线 | 91社区在线观看精品 | 国产福利视频一区二区微拍 | 九九99香蕉在线视频免费 | 91aaa免费免费国产在线观看 | 26uuu成人人网图片 | 国内自拍2020 | 国产亚洲一区二区三区 | 日本视频中文字幕 | 九九精品成人免费国产片 | 国产香蕉一区二区在线观看 | 精品国产91久久久久久久 | 91成人免费视频 | 满城尽带黄金甲大胸片 |