From 3d2b51ea4520533de5e78f88dddf5b5c7dce4247 Mon Sep 17 00:00:00 2001
From: mitao <2763622819@qq.com>
Date: 星期四, 06 六月 2024 15:56:18 +0800
Subject: [PATCH] 管理后台添加营销员导入功能

---
 meiya-core/src/main/java/com/sinata/core/util/ExcelExportUtil.java |  116 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 115 insertions(+), 1 deletions(-)

diff --git a/meiya-core/src/main/java/com/sinata/core/util/ExcelExportUtil.java b/meiya-core/src/main/java/com/sinata/core/util/ExcelExportUtil.java
index c8ae99a..cd74242 100644
--- a/meiya-core/src/main/java/com/sinata/core/util/ExcelExportUtil.java
+++ b/meiya-core/src/main/java/com/sinata/core/util/ExcelExportUtil.java
@@ -1,8 +1,14 @@
 package com.sinata.core.util;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.FileInputStream;
+import java.io.InputStream;
 import org.apache.poi.hssf.usermodel.HSSFCellStyle;
+import org.apache.poi.hssf.usermodel.HSSFDataFormat;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.hssf.util.HSSFColor;
+import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.CellStyle;
 import org.apache.poi.ss.usermodel.Font;
 import org.apache.poi.ss.usermodel.Row;
@@ -17,6 +23,8 @@
 import java.io.OutputStream;
 import java.net.URLEncoder;
 import java.util.List;
+import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.multipart.commons.CommonsMultipartFile;
 
 /**
  * Excel报表导出工具类
@@ -34,7 +42,7 @@
      */
     public static void easySheet(String fileName, String sheetName, List<List<Object>> dataList, HttpServletResponse response) throws IOException {
         //设置响应头,输出文件
-        setResponseHeader(response, fileName);
+        setResponseHeader2(response, fileName);
 
         HSSFWorkbook workbook = new HSSFWorkbook();
         Sheet sheet = null;
@@ -70,6 +78,10 @@
         sheet.setDefaultColumnWidth(15);//setColumnWidth设置cell的宽度
         sheet.setDefaultRowHeightInPoints(20);
 
+        // 设置单元格类型为文本类型
+        HSSFDataFormat dataFormat = workbook.createDataFormat();
+        style.setDataFormat(dataFormat.getFormat("@"));
+
         //填充报表数据
         for (int y = 0; y < dataList.size(); y++) {
             List<Object> cellList = dataList.get(y);
@@ -88,6 +100,92 @@
         outStream.flush();
         outStream.close();
     }
+    /**
+     * 简单模板excel导出功能
+     *
+     * @param fileName  报表文件名
+     * @param sheetName 报表表名
+     * @param dataList  报表数据(包含行头和列内容)
+     * @param response
+     * @throws IOException
+     */
+    public static InputStream easySheet2(String fileName, String sheetName, List<List<Object>> dataList, HttpServletResponse response) throws IOException {
+        //设置响应头,输出文件
+        setResponseHeader2(response, fileName);
+
+        HSSFWorkbook workbook = new HSSFWorkbook();
+        Sheet sheet = null;
+
+        HSSFCellStyle style = workbook.createCellStyle();
+        // 创建字体对象
+        Font ztFont = workbook.createFont();
+        ztFont.setItalic(true);                     // 设置字体为斜体字
+        ztFont.setColor(Font.COLOR_RED);            // 将字体设置为“红色”
+        ztFont.setFontHeightInPoints((short) 22);    // 将字体大小设置为18px
+        ztFont.setFontName("华文行楷");             // 将“华文行楷”字体应用到当前单元格上
+        ztFont.setUnderline(Font.U_DOUBLE);         // 添加(Font.U_SINGLE单条下划线/Font.U_DOUBLE双条下划线)
+        style.setFont(ztFont);                    // 将字体应用到样式上面
+
+        // 设置单元格边框样式
+        style.setBorderBottom(CellStyle.BORDER_THICK);
+        style.setBorderTop(CellStyle.BORDER_DASHED);
+        style.setBorderLeft(CellStyle.BORDER_DOUBLE);
+        style.setBorderRight(CellStyle.BORDER_THIN);
+
+        // 设置单元格边框颜色
+        style.setBottomBorderColor(HSSFColor.ORANGE.index);
+        style.setTopBorderColor(HSSFColor.ORANGE.index);
+        style.setLeftBorderColor(HSSFColor.ORANGE.index);
+
+        style.setFillForegroundColor(HSSFColor.SKY_BLUE.index);
+        style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
+        style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
+
+        // 设置单元格内容垂直对其方式
+        style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
+        sheet = workbook.createSheet(sheetName);//设置表明
+        sheet.setDefaultColumnWidth(15);//setColumnWidth设置cell的宽度
+        sheet.setDefaultRowHeightInPoints(20);
+
+        //填充报表数据
+        for (int y = 0; y < dataList.size(); y++) {
+            List<Object> cellList = dataList.get(y);
+            Row row = sheet.createRow(y);
+            for (int x = 0; x < cellList.size(); x++) {
+                row.createCell(x).setCellValue(ToolUtil.toStr(cellList.get(x)));
+            }
+        }
+        ByteArrayOutputStream bos = null;
+        try {
+            bos = new ByteArrayOutputStream();
+            workbook.write(bos);
+            byte[] byteArray = bos.toByteArray();
+            return new ByteArrayInputStream(byteArray);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }finally {
+            if (bos != null) {
+                bos.flush();
+                bos.close();
+            }
+        }
+        /*
+        try {
+            File file = new File("F:\\DeskTop");
+            if (!file.exists()) {
+                file.mkdirs();// 创建文件根目录
+            }
+            String savePath = file.getPath() +"/导入失败数据.xls";
+            OutputStream os = new FileOutputStream(savePath);
+            workbook.write(os);
+            os.flush();
+            os.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }*/
+        return null;
+    }
+
 
     /**
      * 复杂杂模板excel导出(合并单元格、设置表格样式等)
@@ -270,4 +368,20 @@
             e.printStackTrace();
         }
     }
+    /**
+     * 设置响应头
+     *
+     * @param response
+     */
+    public static void setResponseHeader2(HttpServletResponse response, String excelName) {
+        response.setCharacterEncoding("utf-8");
+        response.setContentType("application/vnd.ms-excel;charset=UTF-8");
+        response.setHeader("Pragma", "no-cache");
+        response.setHeader("Cache-Control", "no-cache");
+        try {
+            response.setHeader("Content-Disposition", "attachment;filename=" + excelName + URLEncoder.encode(".xls", "UTF-8"));
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
 }

--
Gitblit v1.7.1