com.houkunlin.system.common.aop.DownloadExcel Maven / Gradle / Ivy
Show all versions of system-common-aop-starter Show documentation
package com.houkunlin.system.common.aop;
import com.alibaba.excel.metadata.AbstractParameterBuilder;
import com.alibaba.excel.support.ExcelTypeEnum;
import com.alibaba.excel.write.builder.AbstractExcelWriterParameterBuilder;
import com.alibaba.excel.write.builder.ExcelWriterBuilder;
import com.alibaba.excel.write.style.DefaultStyle;
import java.io.File;
import java.io.InputStream;
import java.lang.annotation.*;
import java.nio.charset.Charset;
/**
* Excel 导出下载
*
* @author HouKunLin
*/
@Inherited
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DownloadExcel {
/**
* 水平渲染配置的 KEY 后缀。主要用在接口方法返回 map 类型数据中存在 List 列表数据进行模板填充时使用。
* 例如,返回了如下 map 信息
*
* Map<String, Object> map = Map.of("name", "姓名",
* "list1", List.of(1,2,3),
* "list2", new FillWrapper(List.of(1,2,3))
* );
*
* 当我们想要对 list1 和 list2 列表进行水平方向渲染时,则需要做如下配合
*
* Map<String, Object> map = Map.of("name", "姓名",
* "list1", List.of(1,2,3),
* "list1.direction.horizontal", true,
* "list2", new FillWrapper(List.of(1,2,3)),
* "list2.direction.horizontal", "true"
* );
*
*/
String HORIZONTAL_SUFFIX = ".direction.horizontal";
/**
* 下载的文件名
* 可自行实现 {@link TemplateParser} 接口来解析字符串模板,默认提供 {@link TemplateParserDefaultImpl} 来支持 SpEL 模板表达式解析
*/
String filename();
/**
* 下载文件的文件内容类型
*/
String contentType() default "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
/**
* 下载的 Excel 类型
*
* @see ExcelTypeEnum
*/
ExcelTypeEnum excelType() default ExcelTypeEnum.XLSX;
/**
* Excel 表格的工作簿名称
*
* @see ExcelWriterBuilder#sheet(String)
*/
String sheetName() default "Sheet1";
/**
* 是否在内存中完成。false:写入临时文件,true:在内存中完成
*
* @see ExcelWriterBuilder#inMemory(Boolean)
*/
boolean inMemory() default false;
/**
* 数据的类型对象
*
* @see AbstractParameterBuilder#head(Class)
*/
Class> dataClass() default Object.class;
/**
* 只有在写入为 CSV 文件时有效
*
* @see ExcelWriterBuilder#charset(Charset)
*/
String charset() default "UTF-8";
/**
* 文件加密密码
*
* @see ExcelWriterBuilder#password(String)
*/
String password() default "";
/**
* 模板文件。
* 支持写法格式:
*
* - 默认实现:classpath:template.xlsx
* - 需自行实现:file:template.xlsx
* - 需自行实现:oss:template.xlsx
*
* 具体支持的写法格式请参考 {@link DownloadPoiHandler} 实现细节
*
* @see ExcelWriterBuilder#withTemplate(String)
* @see ExcelWriterBuilder#withTemplate(File)
* @see ExcelWriterBuilder#withTemplate(InputStream)
*/
String withTemplate() default "";
/**
* excel中时间是存储1900年起的一个双精度浮点数,但是有时候默认开始日期是1904,所以设置这个值改成默认1904年开始。
* 如果 Date 使用 1904 窗口化,则为 true,如果使用 1900 日期窗口化,则为 false。
*
* @see AbstractParameterBuilder#use1904windowing(Boolean)
*/
boolean use1904windowing() default false;
/**
* 是否使用默认的样式
*
* @see AbstractExcelWriterParameterBuilder#useDefaultStyle(Boolean)
* @see DefaultStyle
*/
boolean useDefaultStyle() default true;
/**
* 是否需要写入头到excel
*
* @see AbstractExcelWriterParameterBuilder#needHead(Boolean)
*/
boolean needHead() default true;
}