Java中實(shí)現(xiàn)簡(jiǎn)單的Excel導(dǎo)出
簡(jiǎn)單介紹一下Java中的Excel文件導(dǎo)出功能(基于HttpServletResponse實(shí)現(xiàn)下載)
首先,引入需要依賴的jar包:
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.14</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.14</version> </dependency>
編寫一個(gè)工具類:
package exceloutput; import org.apache.commons.lang3.StringUtils; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.streaming.SXSSFSheet; import org.apache.poi.xssf.streaming.SXSSFWorkbook; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.List; import java.util.UUID; /** * @author haozz * @date 2018/6/6 9:57 * @description excel導(dǎo)出抽象工具類 **/ public abstract class ExportAbstractUtil { public void write(HttpServletResponse response, Workbook workbook){ String fileName = UUID.randomUUID().toString()+".xls"; pwrite(response,workbook,fileName); } public void write(HttpServletResponse response,Workbook workbook,String fileName){ if(StringUtils.isEmpty(fileName)){ fileName = UUID.randomUUID().toString()+".xls"; } pwrite(response,workbook,fileName); } public void write(HttpServletResponse response, List<List<String>> lists,String fileName){ if(StringUtils.isEmpty(fileName)){ fileName = UUID.randomUUID().toString()+".xls"; } SXSSFWorkbook workbook = new SXSSFWorkbook(lists.size()); SXSSFSheet sheet = workbook.createSheet(fileName.substring(0,fileName.indexOf(".xls"))); Integer rowIndex = 0; Row row = null; Cell cell = null; for(List<String> rowData: lists ){ Integer columnIndex = 0; row = sheet.createRow(rowIndex++); for(String columnVal:rowData){ cell = row.createCell(columnIndex++); cell.setCellValue(columnVal); } } pwrite(response,workbook,fileName); } private void pwrite(HttpServletResponse response,Workbook workbook,String fileName){ response.setCharacterEncoding("UTF-8"); response.setContentType("application/vnd.ms-excel;charset=UTF-8"); try { response.addHeader("Content-Disposition", "attachment; filename="+new String(fileName.getBytes("UTF-8"),"ISO8859-1")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); fileName= UUID.randomUUID().toString()+".xls"; response.addHeader("Content-Disposition", "attachment; filename="+fileName); } try { workbook.write(response.getOutputStream()); } catch (IOException e) { e.printStackTrace(); } } }
有了這個(gè)工具類就可以實(shí)現(xiàn)Excel導(dǎo)出了,代碼不難,這里就不多解釋了。
在SpringBoot項(xiàng)目中編寫一個(gè)導(dǎo)出Excel的Controller,并繼承上面的ExportAbstractUtil,給出一個(gè)接口用作測(cè)試:
package com.csdn.myboot.controller; import com.csdn.myboot.utils.ExportAbstractUtil; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * @author haozz * @date 2018/6/6 10:14 * @description **/ @Controller @RequestMapping(value = "/index") public class HelloCtrl extends ExportAbstractUtil{ @RequestMapping(value = "/testExcelOutPut") @ResponseBody public void testExcelOutPut(HttpServletResponse response){ //拼接數(shù)據(jù)start List<List<String>> lists = new ArrayList<List<String>>(); String rows[] = {"year","month","day"}; List<String> rowsTitle = Arrays.asList(rows); lists.add(rowsTitle); for(int i = 0; i<=9;i++){ String [] rowss = {"1","2","3"}; List<String> rowssList = Arrays.asList(rowss); lists.add(rowssList); } //拼接數(shù)據(jù)end write(response,lists,"導(dǎo)出Excel.xls"); } }
瀏覽器輸入鏈接:
即可自動(dòng)下載測(cè)試數(shù)據(jù)組成的Excel:
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
- java導(dǎo)出Excel文件的步驟全紀(jì)錄
- java動(dòng)態(tài)導(dǎo)出excel壓縮成zip下載的方法
- Java導(dǎo)出excel時(shí)合并同一列中相同內(nèi)容的行思路詳解
- Java poi導(dǎo)出Excel下載到客戶端
- java實(shí)現(xiàn)的導(dǎo)出Excel工具類實(shí)例
- java導(dǎo)出數(shù)據(jù)庫(kù)中Excel表格數(shù)據(jù)的方法
- Java實(shí)現(xiàn)Excel導(dǎo)入導(dǎo)出數(shù)據(jù)庫(kù)的方法示例
- java導(dǎo)出Excel通用方法的實(shí)例詳解
- java導(dǎo)出大批量(百萬(wàn)以上)數(shù)據(jù)的excel文件
- java實(shí)現(xiàn)合并單元格的同時(shí)并導(dǎo)出excel示例
相關(guān)文章
springboot aspect通過@annotation進(jìn)行攔截的實(shí)例代碼詳解
這篇文章主要介紹了springboot aspect通過@annotation進(jìn)行攔截的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08vue 使用vuex在頁(yè)面跳轉(zhuǎn)的實(shí)現(xiàn)方式
這篇文章主要介紹了vue 使用vuex在頁(yè)面跳轉(zhuǎn)的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08cmd中javac和java使用及注意事項(xiàng)詳解
這篇文章主要介紹了cmd中javac和java使用及注意事項(xiàng)詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07Java?如何接收kernel傳過來的數(shù)組(推薦)
這篇文章主要介紹了Java?如何接收kernel傳過來的數(shù)組,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-08-08mybatis如何使用Java8的日期LocalDate和LocalDateTime詳解
這篇文章主要給大家介紹了關(guān)于mybatis如何使用Java8的日期LocalDate和LocalDateTime的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09Netty分布式ByteBuf中PooledByteBufAllocator剖析
這篇文章主要為大家介紹了Netty分布式ByteBuf剖析PooledByteBufAllocator簡(jiǎn)述,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03