使用easyExcel在匯入資料事有很好的使用性,方便操作,
添加依賴:
<dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>3.0.5</version> </dependency>
前端決議的檔案流呼叫這個方法;
需要首先創建監聽方法類
import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Objects; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import lombok.extern.slf4j.Slf4j; /** * 讀取資料監聽器. * 監聽excel決議到的資料 * @author: xiehj * Date: 2023-06-07 */ @Slf4j public class CommonExcelListener<T> extends AnalysisEventListener<T> { /**存放決議到的資料,給了一個初始容量,為了避免list的頻繁擴容帶來的性能問題.*/ private final List<T> list = new ArrayList<>(1000); /**決議每一行都會執行該方法.*/ @Override public void invoke(final T data, final AnalysisContext analysisContext) { this.list.add(data); } /**決議完成.*/ @Override public void doAfterAllAnalysed(final AnalysisContext analysisContext) { } /**決議表頭.*/ @Override public void invokeHeadMap(final Map<Integer, String> headMap, final AnalysisContext context) { headMap.entrySet().removeIf(h -> Objects.isNull(h.getValue()) || "".equals(h.getValue())); } public List<T> getList() { return this.list; } }
創建utils,創建這個方法即可
public String importFile(final InputStream inputStream) { // 如果集合為空,則不用處理, if (Objects.isNull(inputStream)) { throw new ExtBusinessException("匯入檔案時,檔案流例外,"); } final CommonExcelListener<ArticleImportVo> listener = new CommonExcelListener<>(); EasyExcel.read(inputStream, ArticleImportVo.class, listener) .headRowNumber(1) .autoTrim(true) .sheet(0) .doRead(); // list即為檔案流決議出的資料物體類, final List<ArticleImportVo> list = listener.getList(); }
通過“easyExcel”匯出檔案代碼:
import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.List; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.alibaba.excel.EasyExcel; import com.mocha.framework.commons.log.annotation.AuditLog; import com.mocha.framework.commons.log.annotation.Language; import com.mocha.sn.business.itbussiness.service.IExportCaseService; import com.mocha.sn.business.itbussiness.vo.ArticleImportVo; import lombok.extern.slf4j.Slf4j; /** * 匯出資料控制器. * Author:xiehj * Date:2023-06-12 */ @RestController @RequestMapping("/v1/api/it/pc/business/export") @Slf4j public class ExportCaseController { private static final String EXCEL_TYPE = ".xlsx"; @Resource private IExportCaseService exportCaseService; /** * 匯出檔案, * @param response 前端回應, */ @GetMapping("/file") @AuditLog(operation = @Language(cn = "下載附件")) public void downloadFile(final HttpServletResponse response) { final List<ArticleImportVo> articleVos = exportCaseService.exportFile(); final String excelName = "匯出資料"; final String fileName = new String(excelName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1); response.reset(); response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); response.addHeader("content-Disposition", "attachment;filename=" + fileName + EXCEL_TYPE); try { EasyExcel.write(response.getOutputStream(), ArticleImportVo.class) .autoCloseStream(Boolean.TRUE).sheet(excelName).doWrite(articleVos); } catch (final IOException e) { log.error("匯出檔案失敗,", e); } } }
在此記錄,方便下次使用時呼叫,
一定要愛著點兒什么,恰似草木對光陰的鐘情,轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/557108.html
標籤:其他
上一篇:JVM GC配置指南
下一篇:返回列表