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)文章
spring根據(jù)controller中接收請求參數(shù)不同走不同service的實現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于spring實現(xiàn)根據(jù)controller中接收請求參數(shù)不同走不同service的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2018-11-11
Java Swing組件布局管理器之FlowLayout(流式布局)入門教程
這篇文章主要介紹了Java Swing組件布局管理器之FlowLayout(流式布局),結(jié)合實例形式分析了Swing組件布局管理器FlowLayout流式布局的常用方法及相關(guān)使用技巧,需要的朋友可以參考下2017-11-11
Java Web學(xué)習(xí)教程之Hibernate And MyBatis的理解
這篇文章主要給大家介紹了關(guān)于Java Web學(xué)習(xí)教程之Hibernate And MyBatis的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們來一起學(xué)習(xí)學(xué)習(xí)吧。2018-04-04
application.yml和bootstrap.yml不生效的3種解決方案
SpringBoot默認(rèn)支持?properties(.properties) 和 YAML(.yml .yaml ) 配置文件,本文主要介紹了application.yml和bootstrap.yml不生效的3種解決方案,具有一定的參考價值,感興趣的可以了解一下2024-03-03
Spring Web項目spring配置文件隨服務(wù)器啟動時自動加載
這篇文章主要介紹了Spring Web項目spring配置文件隨服務(wù)器啟動時自動加載,加載spring的配置文件,并且只加載一次,從而提高程序效率。具體內(nèi)容詳情大家通過本文一起學(xué)習(xí)吧2018-01-01
Java中關(guān)于Collections集合工具類的詳細(xì)介紹
Java提供了一個操作Set、List和Map等集合的工具類:Collections,該工具提供了大量方法對集合元素進(jìn)行排序、查詢和修改等操作,還提供了將集合對象設(shè)置為不可變、對集合對象實現(xiàn)同步控制等方法2021-09-09

