package com.yssh.service; import com.yssh.entity.xls.DayExcel; import com.yssh.utils.ExcelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Service; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Excel导出服务类 * @author WWW * @author 2023-08-05 */ @Service public class XlsExportService { protected final Logger logger = LoggerFactory.getLogger(this.getClass()); @Value("${report.path}") private String reportPath; /** * 获取导出路径 */ private String getExpPath(String type) { String path = reportPath + File.separator + type; File f = new File(path); if (!f.exists() || !f.isDirectory()) { f.mkdirs(); } return path; } /** * 获取Excel模板 */ private String getXslTemplate(String type) throws IOException { ClassPathResource resource = new ClassPathResource(String.format("templates/%s.xlsx", type)); return resource.exists() ? resource.getFile().getPath() : null; } /** * 创建Excel */ private void createExcel(String source, String target, List list) { Map> map = new HashMap<>(); map.put("data", list); ExcelUtils.writeToTemplate(source, target, map); } /** * 创建日报 */ public void createDayReport() { try { String type = "day"; List list = new ArrayList<>(); for (int i = 1; i < 47; i++) { DayExcel day = new DayExcel("AI-" + (i < 10 ? "0" : "") + i, "lj", "ljtb", "ys", "fs", "fx", "wd"); list.add(day); } String source = getXslTemplate(type); String target = String.format("%s\\%d.xlsx", getExpPath(type), 20230808); createExcel(source, target, list); } catch (Exception ex) { logger.error(ex.getMessage(), ex); } } /** * 创建周报 */ public void createWeekReport() { try { String source = getXslTemplate("week"); } catch (Exception ex) { logger.error(ex.getMessage(), ex); } } /** * 创建月报 */ public void createMonthReport() { try { String source = getXslTemplate("month"); } catch (Exception ex) { logger.error(ex.getMessage(), ex); } } }