123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- package com.huaxu.common;
- import java.io.File;
- import java.io.IOException;
- import java.io.InputStream;
- import java.net.URL;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.HashSet;
- import java.util.List;
- import java.util.Set;
- import com.alibaba.excel.metadata.Font;
- import com.alibaba.excel.metadata.Sheet;
- import com.alibaba.excel.metadata.TableStyle;
- import com.alibaba.excel.support.ExcelTypeEnum;
- import org.apache.commons.lang.time.DateFormatUtils;
- import org.apache.poi.ss.formula.functions.T;
- import org.apache.poi.ss.usermodel.FillPatternType;
- import org.apache.poi.ss.usermodel.HorizontalAlignment;
- import org.apache.poi.ss.usermodel.IndexedColors;
- import org.apache.poi.ss.usermodel.VerticalAlignment;
- import org.apache.poi.xssf.streaming.SXSSFSheet;
- import com.alibaba.excel.EasyExcel;
- import com.alibaba.excel.ExcelWriter;
- import com.alibaba.excel.annotation.ExcelProperty;
- import com.alibaba.excel.annotation.format.DateTimeFormat;
- import com.alibaba.excel.annotation.format.NumberFormat;
- import com.alibaba.excel.annotation.write.style.ColumnWidth;
- import com.alibaba.excel.annotation.write.style.ContentRowHeight;
- import com.alibaba.excel.annotation.write.style.HeadRowHeight;
- import com.alibaba.excel.util.FileUtils;
- import com.alibaba.excel.write.merge.LoopMergeStrategy;
- import com.alibaba.excel.write.metadata.WriteSheet;
- import com.alibaba.excel.write.metadata.WriteTable;
- import com.alibaba.excel.write.metadata.style.WriteCellStyle;
- import com.alibaba.excel.write.metadata.style.WriteFont;
- import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
- import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
- /**
- * @ClassName EasyExcelUtil
- * @Description: Excel导出通用工具类
- * @Author :WYY
- * @Date 2020/10/27
- * @Version V1.0
- **/
- public class EasyExcelUtil {
- /**
- * @MethodName:Excel导出
- * @Description: TODO
- * @Param: path 导出基础路径 t实体名 excelName 文件名 data数据
- * @Return:
- * @Author: WYY
- * @Date: 2020/10/28
- **/
- public static String excelWrite(String path,Class t, String excelName,List data) {
- String filePath = "";
- String fileName = DateFormatUtils.format(new Date(), "yyyy/MM/dd") + File.separator;
- fileName = fileName + excelName + System.currentTimeMillis() + ".xlsx";
- try {
- getAbsoluteFile(path, fileName);
- EasyExcel.write(path + fileName, t)
- .excelType(ExcelTypeEnum.XLSX)
- .registerWriteHandler(new CustemhandlerUtils())
- .registerWriteHandler(EasyExcelUtil.getStyleStrategy())
- .sheet("Export")
- .doWrite(data);
- filePath = getPathFileName(path, fileName);
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- }
- return filePath;
- }
- private static final String getPathFileName(String uploadDir, String fileName) throws IOException {
- String pathFileName = uploadDir + "/" + fileName;
- return ToolUtil.path(pathFileName);
- }
- private static final File getAbsoluteFile(String uploadDir, String fileName) throws IOException {
- File desc = new File(uploadDir + File.separator + fileName);
- if (!desc.getParentFile().exists()) {
- desc.getParentFile().mkdirs();
- }
- return desc;
- }
- public static HorizontalCellStyleStrategy getStyleStrategy(){
- // 头的策略
- WriteCellStyle headWriteCellStyle = new WriteCellStyle();
- // 背景设置为灰色
- headWriteCellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
- WriteFont headWriteFont = new WriteFont();
- headWriteFont.setFontHeightInPoints((short)12);
- // 字体样式
- headWriteFont.setFontName("Frozen");
- headWriteCellStyle.setWriteFont(headWriteFont);
- //自动换行
- headWriteCellStyle.setWrapped(false);
- // 水平对齐方式
- headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
- // 垂直对齐方式
- headWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
- // 内容的策略
- WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
- // 这里需要指定 FillPatternType 为FillPatternType.SOLID_FOREGROUND 不然无法显示背景颜色.头默认了 FillPatternType所以可以不指定
- // contentWriteCellStyle.setFillPatternType(FillPatternType.SQUARES);
- // 背景白色
- contentWriteCellStyle.setFillForegroundColor(IndexedColors.WHITE.getIndex());
- WriteFont contentWriteFont = new WriteFont();
- // 字体大小
- contentWriteFont.setFontHeightInPoints((short)12);
- // 字体样式
- contentWriteFont.setFontName("Calibri");
- contentWriteCellStyle.setWriteFont(contentWriteFont);
- // 这个策略是 头是头的样式 内容是内容的样式 其他的策略可以自己实现
- return new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
- }
- }
|