Java中實現(xiàn)簡單的Excel導(dǎo)出
簡單介紹一下Java中的Excel文件導(dǎo)出功能(基于HttpServletResponse實現(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>
編寫一個工具類:
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();
}
}
}
有了這個工具類就可以實現(xiàn)Excel導(dǎo)出了,代碼不難,這里就不多解釋了。
在SpringBoot項目中編寫一個導(dǎo)出Excel的Controller,并繼承上面的ExportAbstractUtil,給出一個接口用作測試:
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");
}
}
瀏覽器輸入鏈接:
即可自動下載測試數(shù)據(jù)組成的Excel:

總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
- java導(dǎo)出Excel文件的步驟全紀(jì)錄
- java動態(tài)導(dǎo)出excel壓縮成zip下載的方法
- Java導(dǎo)出excel時合并同一列中相同內(nèi)容的行思路詳解
- Java poi導(dǎo)出Excel下載到客戶端
- java實現(xiàn)的導(dǎo)出Excel工具類實例
- java導(dǎo)出數(shù)據(jù)庫中Excel表格數(shù)據(jù)的方法
- Java實現(xiàn)Excel導(dǎo)入導(dǎo)出數(shù)據(jù)庫的方法示例
- java導(dǎo)出Excel通用方法的實例詳解
- java導(dǎo)出大批量(百萬以上)數(shù)據(jù)的excel文件
- java實現(xiàn)合并單元格的同時并導(dǎo)出excel示例
相關(guān)文章
springboot aspect通過@annotation進(jìn)行攔截的實例代碼詳解
這篇文章主要介紹了springboot aspect通過@annotation進(jìn)行攔截的方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08
vue 使用vuex在頁面跳轉(zhuǎn)的實現(xiàn)方式
這篇文章主要介紹了vue 使用vuex在頁面跳轉(zhuǎn)的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08
Java?如何接收kernel傳過來的數(shù)組(推薦)
這篇文章主要介紹了Java?如何接收kernel傳過來的數(shù)組,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2024-08-08
mybatis如何使用Java8的日期LocalDate和LocalDateTime詳解
這篇文章主要給大家介紹了關(guān)于mybatis如何使用Java8的日期LocalDate和LocalDateTime的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09
Netty分布式ByteBuf中PooledByteBufAllocator剖析
這篇文章主要為大家介紹了Netty分布式ByteBuf剖析PooledByteBufAllocator簡述,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03

