From 80b6cbfc9c861469146318d0b3dd5f8b8b525b8a Mon Sep 17 00:00:00 2001
From: xiejun <xiejun@vci-tech.com>
Date: 星期五, 01 十一月 2024 15:11:19 +0800
Subject: [PATCH] Revert "集成获取mdm分发通用数据格式接口集成"

---
 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