From 9b4433fddf5b401edb0aace8a404ac733b122702 Mon Sep 17 00:00:00 2001
From: 田源 <tianyuan@vci-tech.com>
Date: 星期四, 03 四月 2025 14:35:02 +0800
Subject: [PATCH] 添加非密字段显示
---
Source/BladeX-Tool/blade-starter-excel/src/main/java/org/springblade/core/excel/util/ExcelUtil.java | 186 ++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 186 insertions(+), 0 deletions(-)
diff --git a/Source/BladeX-Tool/blade-starter-excel/src/main/java/org/springblade/core/excel/util/ExcelUtil.java b/Source/BladeX-Tool/blade-starter-excel/src/main/java/org/springblade/core/excel/util/ExcelUtil.java
new file mode 100644
index 0000000..48797b7
--- /dev/null
+++ b/Source/BladeX-Tool/blade-starter-excel/src/main/java/org/springblade/core/excel/util/ExcelUtil.java
@@ -0,0 +1,186 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 搴勯獮 (smallchill@163.com)
+ */
+package org.springblade.core.excel.util;
+
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.read.builder.ExcelReaderBuilder;
+import com.alibaba.excel.read.listener.ReadListener;
+import com.alibaba.excel.util.DateUtils;
+import com.alibaba.excel.write.handler.WriteHandler;
+import lombok.SneakyThrows;
+import org.apache.commons.codec.Charsets;
+import org.springblade.core.excel.listener.DataListener;
+import org.springblade.core.excel.listener.ImportListener;
+import org.springblade.core.excel.support.ExcelException;
+import org.springblade.core.excel.support.ExcelImporter;
+import org.springframework.util.StringUtils;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.BufferedInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URLEncoder;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * Excel宸ュ叿绫�
+ *
+ * @author Chill
+ * @apiNote https://www.yuque.com/easyexcel/doc/easyexcel
+ */
+public class ExcelUtil {
+
+ /**
+ * 璇诲彇excel鐨勬墍鏈塻heet鏁版嵁
+ *
+ * @param excel excel鏂囦欢
+ * @return List<Object>
+ */
+ public static <T> List<T> read(MultipartFile excel, Class<T> clazz) {
+ DataListener<T> dataListener = new DataListener<>();
+ ExcelReaderBuilder builder = getReaderBuilder(excel, dataListener, clazz);
+ if (builder == null) {
+ return null;
+ }
+ builder.doReadAll();
+ return dataListener.getDataList();
+ }
+
+ /**
+ * 璇诲彇excel鐨勬寚瀹歴heet鏁版嵁
+ *
+ * @param excel excel鏂囦欢
+ * @param sheetNo sheet搴忓彿(浠�0寮�濮�)
+ * @return List<Object>
+ */
+ public static <T> List<T> read(MultipartFile excel, int sheetNo, Class<T> clazz) {
+ return read(excel, sheetNo, 1, clazz);
+ }
+
+ /**
+ * 璇诲彇excel鐨勬寚瀹歴heet鏁版嵁
+ *
+ * @param excel excel鏂囦欢
+ * @param sheetNo sheet搴忓彿(浠�0寮�濮�)
+ * @param headRowNumber 琛ㄥご琛屾暟
+ * @return List<Object>
+ */
+ public static <T> List<T> read(MultipartFile excel, int sheetNo, int headRowNumber, Class<T> clazz) {
+ DataListener<T> dataListener = new DataListener<>();
+ ExcelReaderBuilder builder = getReaderBuilder(excel, dataListener, clazz);
+ if (builder == null) {
+ return null;
+ }
+ builder.sheet(sheetNo).headRowNumber(headRowNumber).doRead();
+ return dataListener.getDataList();
+ }
+
+ /**
+ * 璇诲彇骞跺鍏ユ暟鎹�
+ *
+ * @param excel excel鏂囦欢
+ * @param importer 瀵煎叆閫昏緫绫�
+ * @param <T> 娉涘瀷
+ */
+ public static <T> void save(MultipartFile excel, ExcelImporter<T> importer, Class<T> clazz) {
+ ImportListener<T> importListener = new ImportListener<>(importer);
+ ExcelReaderBuilder builder = getReaderBuilder(excel, importListener, clazz);
+ if (builder != null) {
+ builder.doReadAll();
+ }
+ }
+
+ /**
+ * 瀵煎嚭excel
+ *
+ * @param response 鍝嶅簲绫�
+ * @param dataList 鏁版嵁鍒楄〃
+ * @param clazz class绫�
+ * @param <T> 娉涘瀷
+ */
+ @SneakyThrows
+ public static <T> void export(HttpServletResponse response, List<T> dataList, Class<T> clazz) {
+ export(response, DateUtils.format(new Date(), DateUtils.DATE_FORMAT_14), "瀵煎嚭鏁版嵁", dataList, clazz);
+ }
+
+ /**
+ * 瀵煎嚭excel
+ *
+ * @param response 鍝嶅簲绫�
+ * @param fileName 鏂囦欢鍚�
+ * @param sheetName sheet鍚�
+ * @param dataList 鏁版嵁鍒楄〃
+ * @param clazz class绫�
+ * @param <T> 娉涘瀷
+ */
+ @SneakyThrows
+ public static <T> void export(HttpServletResponse response, String fileName, String sheetName, List<T> dataList, Class<T> clazz) {
+ response.setContentType("application/vnd.ms-excel");
+ response.setCharacterEncoding(Charsets.UTF_8.name());
+ fileName = URLEncoder.encode(fileName, Charsets.UTF_8.name());
+ response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
+ EasyExcel.write(response.getOutputStream(), clazz).sheet(sheetName).doWrite(dataList);
+ }
+
+ /**
+ * 瀵煎嚭excel
+ *
+ * @param response 鍝嶅簲绫�
+ * @param fileName 鏂囦欢鍚�
+ * @param sheetName sheet鍚�
+ * @param dataList 鏁版嵁鍒楄〃
+ * @param clazz class绫�
+ * @param writeHandler 鑷畾涔夊鐞嗗櫒
+ * @param <T> 娉涘瀷
+ */
+ @SneakyThrows
+ public static <T> void export(HttpServletResponse response, String fileName, String sheetName, List<T> dataList, WriteHandler writeHandler, Class<T> clazz) {
+ response.setContentType("application/vnd.ms-excel");
+ response.setCharacterEncoding(Charsets.UTF_8.name());
+ fileName = URLEncoder.encode(fileName, Charsets.UTF_8.name());
+ response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
+ EasyExcel.write(response.getOutputStream(), clazz).registerWriteHandler(writeHandler).sheet(sheetName).doWrite(dataList);
+ }
+
+ /**
+ * 鑾峰彇鏋勫缓绫�
+ *
+ * @param excel excel鏂囦欢
+ * @param readListener excel鐩戝惉绫�
+ * @return ExcelReaderBuilder
+ */
+ public static <T> ExcelReaderBuilder getReaderBuilder(MultipartFile excel, ReadListener<T> readListener, Class<T> clazz) {
+ String filename = excel.getOriginalFilename();
+ if (StringUtils.isEmpty(filename)) {
+ throw new ExcelException("璇蜂笂浼犳枃浠�!");
+ }
+ if ((!StringUtils.endsWithIgnoreCase(filename, ".xls") && !StringUtils.endsWithIgnoreCase(filename, ".xlsx"))) {
+ throw new ExcelException("璇蜂笂浼犳纭殑excel鏂囦欢!");
+ }
+ InputStream inputStream;
+ try {
+ inputStream = new BufferedInputStream(excel.getInputStream());
+ return EasyExcel.read(inputStream, clazz, readListener);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+}
--
Gitblit v1.9.3