| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252 |
- package com.ydtech.utils.excel;
- import cn.afterturn.easypoi.excel.ExcelExportUtil;
- import cn.afterturn.easypoi.excel.ExcelImportUtil;
- import cn.afterturn.easypoi.excel.entity.ExportParams;
- import cn.afterturn.easypoi.excel.entity.ImportParams;
- import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
- import com.ydtech.exception.SystemException;
- import com.ydtech.modules.inv.model.InvInvoiceInfo;
- import org.apache.commons.lang3.StringUtils;
- import org.apache.poi.ss.usermodel.Workbook;
- import org.springframework.web.multipart.MultipartFile;
- import javax.servlet.ServletOutputStream;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import java.io.File;
- import java.io.IOException;
- import java.io.InputStream;
- import java.net.URLEncoder;
- import java.util.List;
- import java.util.Map;
- import java.util.NoSuchElementException;
- /**
- * @Author: shixk
- * @create: 2021/9/10 10:32
- * description: Excel导入导出工具类
- */
- public class ExcelUtils2 {
- /**
- * excel 导出
- *
- * @param list 数据列表
- * @param fileName 导出时的excel名称
- * @param response
- */
- public static void exportExcel(List<Map<String, Object>> list, String fileName, HttpServletRequest request, HttpServletResponse response) throws IOException {
- defaultExport(list, fileName, request, response);
- }
- /**
- * 默认的 excel 导出
- *
- * @param list 数据列表
- * @param fileName 导出时的excel名称
- * @param response
- */
- private static void defaultExport(List<Map<String, Object>> list, String fileName, HttpServletRequest request, HttpServletResponse response) throws IOException {
- //把数据添加到excel表格中
- Workbook workbook = ExcelExportUtil.exportExcel(list, ExcelType.HSSF);
- downLoadExcel(fileName, request, response, workbook);
- }
- /**
- * excel 导出
- *
- * @param list 数据列表
- * @param pojoClass pojo类型
- * @param fileName 导出时的excel名称
- * @param response
- * @param exportParams 导出参数(标题、sheet名称、是否创建表头,表格类型)
- */
- private static void defaultExport(List<?> list, Class<?> pojoClass, String fileName, HttpServletRequest request, HttpServletResponse response, ExportParams exportParams) throws IOException {
- //把数据添加到excel表格中
- Workbook workbook = ExcelExportUtil.exportExcel(exportParams, pojoClass, list);
- downLoadExcel(fileName, request, response, workbook);
- }
- /**
- * excel 导出
- *
- * @param list 数据列表
- * @param pojoClass pojo类型
- * @param fileName 导出时的excel名称
- * @param exportParams 导出参数(标题、sheet名称、是否创建表头,表格类型)
- * @param response
- */
- public static void exportExcel(List<?> list, Class<?> pojoClass, String fileName, ExportParams exportParams, HttpServletRequest request, HttpServletResponse response) throws IOException {
- defaultExport(list, pojoClass, fileName, request, response, exportParams);
- }
- /**
- * excel 导出
- *
- * @param list 数据列表
- * @param title 表格内数据标题
- * @param sheetName sheet名称
- * @param pojoClass pojo类型
- * @param fileName 导出时的excel名称
- * @param response
- */
- public static void exportExcel(List<?> list, String title, String sheetName, Class<?> pojoClass, String fileName, HttpServletRequest request, HttpServletResponse response) throws IOException {
- defaultExport(list, pojoClass, fileName, request, response, new ExportParams(title, sheetName, ExcelType.XSSF));
- }
- /**
- * excel 导出
- *
- * @param list 数据列表
- * @param title 表格内数据标题
- * @param sheetName sheet名称
- * @param pojoClass pojo类型
- * @param fileName 导出时的excel名称
- * @param isCreateHeader 是否创建表头
- * @param response
- */
- public static void exportExcel(List<?> list, String title, String sheetName, Class<?> pojoClass, String fileName, boolean isCreateHeader, HttpServletRequest request, HttpServletResponse response) throws IOException {
- ExportParams exportParams = new ExportParams(title, sheetName, ExcelType.XSSF);
- exportParams.setCreateHeadRows(isCreateHeader);
- defaultExport(list, pojoClass, fileName, request, response, exportParams);
- }
- /**
- * excel下载
- *
- * @param fileName 下载时的文件名称
- * @param response
- * @param workbook excel数据
- */
- private static void downLoadExcel(String fileName, HttpServletRequest request, HttpServletResponse response, Workbook workbook) throws IOException {
- try {
- response.reset();
- response.addHeader("content-type", "application/vnd.ms-excel;charset=UTF-8");
- response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");
- // //2023-05-22 修改文件名中文问题
- // response.setHeader("Content-Disposition", "attachment;filename*= UTF-8''"+ URLEncoder.encode(fileName,"UTF-8")+ ".xlsx");
- response.addHeader("Cache-Control", "no-cache");
- response.setHeader("Set-Cookie", "fileDownload=true; path=/");
- response.setHeader("Access-Control-Allow-Origin", "*");
- ServletOutputStream outputStream = response.getOutputStream();
- workbook.write(outputStream);
- if (outputStream != null) {
- outputStream.close();
- }
- if (workbook != null) workbook.close();
- } catch (Exception e) {
- throw new IOException(e.getMessage());
- }
- }
- /**
- * excel 导入
- *
- * @param file excel文件
- * @param pojoClass pojo类型
- * @param <T>
- * @return
- */
- public static <T> List<T> importExcel(MultipartFile file, Class<T> pojoClass) throws IOException {
- return importExcel(file, 0, 1, pojoClass);
- }
- /**
- * excel 导入
- *
- * @param filePath excel文件路径
- * @param titleRows 表格内数据标题行
- * @param headerRows 表头行
- * @param pojoClass pojo类型
- * @param <T>
- * @return
- */
- public static <T> List<T> importExcel(String filePath, Integer titleRows, Integer headerRows, Class<T> pojoClass) throws IOException {
- if (StringUtils.isBlank(filePath)) {
- return null;
- }
- ImportParams params = new ImportParams();
- params.setTitleRows(titleRows);
- params.setHeadRows(headerRows);
- // params.setNeedSave(true); //不保存
- params.setSaveUrl("/home/server/upload/excel/");
- try {
- return ExcelImportUtil.importExcel(new File(filePath), pojoClass, params);
- } catch (NoSuchElementException e) {
- throw new IOException("模板不能为空");
- } catch (Exception e) {
- throw new IOException(e.getMessage());
- }
- }
- /**
- * excel 导入
- *
- * @param file 上传的文件
- * @param titleRows 表格内数据标题行
- * @param headerRows 表头行
- * @param pojoClass pojo类型
- * @param <T>
- * @return
- */
- public static <T> List<T> importExcel(MultipartFile file, Integer titleRows, Integer headerRows, Class<T> pojoClass) throws IOException {
- if (file == null) {
- return null;
- }
- try {
- return importExcel(file.getInputStream(), titleRows, headerRows, pojoClass);
- } catch (Exception e) {
- throw new IOException(e.getMessage());
- }
- }
- /**
- * excel 导入
- *
- * @param inputStream 文件输入流
- * @param titleRows 表格内数据标题行
- * @param headerRows 表头行
- * @param pojoClass pojo类型
- * @param <T>
- * @return
- */
- public static <T> List<T> importExcel(InputStream inputStream, Integer titleRows, Integer headerRows, Class<T> pojoClass) throws Exception {
- if (inputStream == null) {
- return null;
- }
- ImportParams params = new ImportParams();
- params.setTitleRows(titleRows);
- params.setHeadRows(headerRows);
- // params.setSaveUrl("/home/server/upload/excel/");
- // params.setNeedSave(true); //不保存
- // params.setNeedVerify(true);
- params.setStartSheetIndex(0);
- try {
- return ExcelImportUtil.importExcel(inputStream, pojoClass, params);
- } catch (NoSuchElementException e) {
- throw new IOException("excel文件不能为空");
- } catch (Exception e) {
- throw new IOException(e.getMessage());
- }
- }
- public static void main(String[] args) {
- File file = new File("E:\\123\\bbb.xlsx");
- ImportParams importParams = new ImportParams();
- importParams.setTitleRows(0);
- importParams.setHeadRows(1);
- importParams.setSheetNum(1);
- List<InvInvoiceInfo> objList = ExcelImportUtil.importExcel(file, InvInvoiceInfo.class, importParams);
- for (InvInvoiceInfo vo : objList) {
- // System.out.println(vo.getInvoiceDate()+ "---" + vo.getIncomeMoney());
- }
- }
- }
|