Files
pj_service_cloud/pjcloud-common/pjcloud-common-excel/README.md
T
2026-10-29 15:46:08 +08:00

4.2 KiB
Raw Blame History

导出默认样式 token

ExcelStyleTokens 提供全局默认样式,配置前缀为 excel.export-style,可放在服务配置或 Nacos 公共配置中。未配置的值使用代码默认值,表头与正文可以分别设置字体、字号、加粗、文字颜色、背景颜色、行高、对齐、换行和缩进。

/admin/user/export-async 和日志导出(/admin/log/export、/admin/log/export-async)已接入。原同步用户导出及未显式接入处理器的业务导出不受影响,已有模板无需修改。

excel:
  export-style:
    header:
      font-name: Microsoft YaHei
      font-size: 11
      bold: true
      font-color: "#FFFFFF"
      background-color: "#1F4E78"
      row-height: 36
      alignment: CENTER
      wrap-text: true
      indent: 0
    body:
      font-name: Microsoft YaHei
      font-size: 11
      bold: false
      font-color: "#243247"
      background-color: "#FFFFFF"
      row-height: 26
      alignment: LEFT
      wrap-text: false
      indent: 1
    striped: true
    alternate-row-color: "#F3F6FA"
    border-style: THIN
    border-color: "#DCE3EC"
    column-width: 22
    # 可选:按 Java 字段名覆盖业务默认列宽。[] 保留字段名大小写。
    column-widths:
      "[userId]": 24
      "[username]": 20
      "[deptName]": 28
      "[roleNameList]": 30
    freeze-header: true
    auto-filter: true
    show-grid-lines: false

颜色支持带或不带 # 的六位 RGB;YAML 中带 # 的颜色必须加引号。字号与行高单位为磅,列宽单位为 Excel 字符宽度(1~255)。配置绑定时校验颜色及尺寸。字体由打开 Excel 的电脑解析,可改为该电脑已安装的中文字体。边框样式与颜色应用于表头列分隔和正文水平分隔,正文不绘制完整网格。

列宽优先级:配置中的 column-widths > 业务默认列宽 > column-width。用户导出已按编号、手机、邮箱、部门、角色和日期等字段分别设置列宽,不扫描全部明细来计算列宽。长文本保持原值,默认正文不换行;需要多行显示时可同时增加 body.row-height 并开启 body.wrap-text。开启交替行底纹时,偶数数据行使用 alternate-row-color,其余数据行使用 body.background-color。

其他导出可显式注册处理器来复用样式:

builder.registerWriteHandler(new ExcelExportStyleHandler(excelConfig.getExportStyle()));

每次导出创建独立处理器,在提交任务时固定当前 token。处理器只支持 XLSX,缓存工作簿中的字体与单元格样式,条纹按实际行号计算,适用于分批流式写入。现有转换器、单元格类型、数据格式及导出列保持原样。固定格式模板应继续使用自身样式,不自动注册此处理器。

日志导出使用独立的 SysLogExcelVO,保留原有信息并按创建时间、类型、标题、操作人、应用、请求方式、请求地址、耗时、IP、提交数据、异常、用户代理、编号的顺序展示。类型显示“正常/错误”,请求地址和用户代理使用明确的中文表头;创建时间保存为可排序的日期单元格,耗时为数字,编号为保留完整精度的文本。报告顶部展示创建时间范围,表头固定为一行,长文本自动换行并适度增加行高,原文保留供展开查看。横向滚动时冻结时间和类型,纵向滚动时冻结报告上下文及表头。

日志导出必须选择完整的创建时间范围,结束时间不得早于开始时间,也不得超过开始时间加一个自然月;前端和同步、异步服务端接口均校验,未通过时不查询日志或创建任务。自然月按月底截断规则计算,例如 1 月 31 日 08:30 到 2 月 28 日 08:30 允许,超过一秒即拒绝。列表查询本身不受导出时间限制。

每批按编号倒序读取 200 条,仅首批统计总数,后续使用编号游标;新增的更大编号不会挤偏后续批次。旧 GET /admin/log/export 仍直接返回附件,新 POST /admin/log/export-async 返回任务信息,使用 /admin/async-task/progress 和命名空间 admin:export:log 查询进度。两个接口均要求 sys_log_export 权限,超出单工作表行数限制时提示缩小筛选范围。