?一、pom文件添加以下依賴
<!-- jxls poi -->
<dependency>
<groupId>org.jxls</groupId>
<artifactId>jxls-poi</artifactId>
<version>2.10.0</version>
</dependency>
<dependency>
<groupId>org.jxls</groupId>
<artifactId>jxls</artifactId>
<version>2.10.0</version>
</dependency>
<dependency>
<groupId>net.sf.jxls</groupId>
<artifactId>jxls-core</artifactId>
<version>1.0.6</version>
</dependency>
二、添加util包
package com.risen.xmgl.util;
import net.sf.jxls.transformer.XLSTransformer;
import org.apache.poi.ss.usermodel.Workbook;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.Map;
public class TemplateExcelUtils {
/**
* 根據(jù)模板導(dǎo)出數(shù)據(jù)
* @param fileName
* @param sourcePath resource/template文件夾下路徑
* @param beanParams
* @param response
* @throws Exception
*/
public static void downLoadExcel(String fileName,String sourcePath, Map<String, Object> beanParams, HttpServletResponse response)
throws Exception {
try{
OutputStream os = getOutputStream(fileName,response);
//讀取模板
InputStream is = TemplateExcelUtils.class.getClassLoader().getResourceAsStream("template/"+sourcePath);
XLSTransformer transformer = new XLSTransformer();
//向模板中寫入內(nèi)容
Workbook workbook = transformer.transformXLS(is, beanParams);
//寫入成功后轉(zhuǎn)化為輸出流
workbook.write(os);
}catch (Exception e){
e.printStackTrace();
throw e;
}
}
/**
* 導(dǎo)出文件時為Writer生成OutputStream.
* @param fileName 文件名
* @param response response
* @return ""
*/
private static OutputStream getOutputStream(String fileName,
HttpServletResponse response) throws Exception {
try {
fileName = URLEncoder.encode(fileName, "UTF-8");
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf8");
response.setHeader("Content-Disposition", "attachment; filename=" + fileName + ".xls");
response.setHeader("Pragma", "public");
response.setHeader("Cache-Control", "no-store");
response.addHeader("Cache-Control", "max-age=0");
return response.getOutputStream();
} catch (IOException e) {
throw new Exception("導(dǎo)出excel表格失敗!", e);
}
}
}
三、在resources目錄下添加template并添加xlsx模板
?注意:xlsx模板使用${list.XXX}? ? ?XXX表示數(shù)據(jù)源list(map形式的list)的數(shù)據(jù)key值,如果list是對象形式的,那么就是該業(yè)務(wù)字段文章來源:http://www.zghlxwxcb.cn/news/detail-677695.html
?四、業(yè)務(wù)層使用:文章來源地址http://www.zghlxwxcb.cn/news/detail-677695.html
List<ZssProjectExpertStore> byIdList = getZssProjectExpertStoreDao().findByIdList(Arrays.asList(uuid.split(",")));
//給導(dǎo)出的序號賦值
IntStream.range(0, byIdList.size()).forEach(i -> {
byIdList.get(i).setZpesUnid(i + 1);
});
try {
Map<String, Object> param = new HashMap<>();
param.put("title", "專家基礎(chǔ)信息");
param.put("list", byIdList);//byIdList數(shù)據(jù)源
TemplateExcelUtils.downLoadExcel("專家基礎(chǔ)信息", "專家基礎(chǔ)信息歸集表.xlsx", param, response);
} catch (Exception e) {
throw new RuntimeException(e);
}
到了這里,關(guān)于java根據(jù)excel模板進行導(dǎo)出數(shù)據(jù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!