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

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

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上傳解析顯示在網頁中,這個另一篇文章總結,敬請期待!

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成品人视频w免费观看w | freexxxx性护士第一次 | 日韩美女强理论片 | 国内久久精品视频 | 五月色天在线视频综合观看 | freese×video性欧美丝袜 | 国产四虎 | 精品99在线观看 | 精品福利一区二区免费视频 | 久久久亚洲国产精品主播 | 精品破处| 538免费精品视频搬运工 | 免费人成黄页在线观看69 | 97在线资源站 | 99re最新网址 | 饭冈加奈子在线播放观看 | 亚洲男人的天堂视频 | 亚洲男人的天堂成人 | 国产小视频在线 | 日本指交 | 国产成人精品本亚洲 | 好男人在线观看免费高清2019韩剧 | sxx免费看视频在线播放 | 日韩精选在线 | 青青草原免费在线视频 | 欧美日韩三区 | 国产精品短视频 | 午夜福利院电影 | 毛片视频网站在线观看 | 美女尿口羞羞视频 | 果冻传媒林予曦图片 | 91精品国产综合久久香蕉 | 毛片资源站 | 91理论片午午伦夜理片久久 | 国产精品久久久精品日日 | 2021海角社区最新版 | 国产精品亚洲专区一区 | 日韩欧美在线一区二区三区 | 欧美午夜性春猛交bbb | 日本在线精品视频 | 国内精品久久久久影院嫩草 |