Excel 导出

Excel 导出组件提供标准导出和模板导出两种方式

  • 标准导出:支持动态设置导出列,可导出 Excel、PDF 文件
  • 模板导出:模板支持 Excel 文件和 Word 文件,支持动态模板、导出主从数据、批量导出。使用 Excel 模板导出 Excel、PDF 文件;使用 Word 模板导出 Word、PDF 文件

Excel 导出组件提供的属性如下

  • “导出数据”属性:选择一个数据集作为导出的数据源
  • “导出文件名”属性:默认是数据集的中文名,输入文件名即可,不需要带后缀
  • “数据来源”属性:选择数据源,分为前端数据、后端数据和全部数据
    • 查询结果数据:查询到当前页面满足条件的数据,导出包括前端计算列。例如,根据设置的过滤条件,满足条件的数据查询出的有36条,数据集分页大小默认为20条/页显示时,此时数据只导出20条数据
    • 数据服务: 从后端导出满足条件的所有数据,导出不包括前端计算列。例如:根据过滤条件满足条件的数据查询出的有36条,此时选择此选项,则会将满足条件的所有数据进行导出,即导出36条数据
    • 全部数据: 导出数据库里的所有数据,不带条件,即使导出的数据集加了条件也不会执行,此选项是导出全部数据,(注:导出的数据集如果带图片,超过200条数据的则会以 zip 格式导出,每200行数据生成一个 Excel 文件)
  • “导出设置”:设置标准导出、模板导出
  • “模板源设置”:使用模板导出时,设置模板来源
    • “绑定数据列”:使用数据组件中附件列中的文件,作为模板
    • “网络地址”:使用一个 URL 作为模板,通常在动态切换模板中使用

Excel 导出组件提供导出操作、导出方法、导出前、导出成功、导出失败等事件。

标准导出

标准导出提供基础设置、列设置和行样式设置

基础设置

设置项 说明
文件类型 03版excel、07版excel 03版excel,导出 xls 文件;07版excel,导出 xlsx 文件
是否输出PDF 是、否 是,导出为 PDF 文件,否,导出为 Excel 文件
标题名称 字符串 设置后,第一行显示标题

导出 Excel 设置界面如下图所示

导出文件如下图所示

导出 PDF 设置界面如下图所示

导出文件如下图所示

列设置

对导出列逐一进行设置,支持调整导出列顺序

设置项 说明
选中 是、否 标记是否导出,仅导出选中的列
标识 字符串 数据集的列名
名称 字符串 重定义列名,导出时使用此名
导出类型 文本、数字、图片、日期 默认无需设置,系统已根据数据列的类型自动识别
列宽 数值 导出的列宽
行高 数值 导出的行高
分组名 字符串 导出双层列头时,定义分组名
单元格纵向合并 是、否 相邻的相同值会合并单元格
后缀 字符串 导出的内容后面加上这个后缀,设置后导出的内容为文本,不能参与统计
是否统计该列 是、否 是,会在最下面显示出合计值。与“后缀”和“数字格式化”互斥,由于设置“后缀”或“数字格式化”后,数值变成文本,从而不能正确统计
数字格式化 DecimalFormat 类的 Pattern DecimalFormat 类用于格式化十进制数字,例如 ,### 表示显示千分位。设置后导出的内容为文本,不能参与统计
导出时间格式 时间格式 yyyy表示年、M表示月、d表示日、h表示小时、m表示分钟、s表示秒,写两个字母表示补零
数据库格式 时间格式 同上
脱敏规则 规则1:n_n,规则2:n,n,规则3:n~@ Excel 导出使用 EasyPoi,参考 EasyPoi 导出数据脱敏,见下面的说明
规则1:采用保留头和尾的方式,中间数据加星号
    例如:身份证 6_4 则保留 370101*********1234 
         手机号 3_4 则保留 131****1234 

规则2:优先保留头,保留规则以对称为主
    例如:姓名 1,3 表示最多隐藏3位,最少隐藏一位
            李云 --> 李*
            张云天 --> 张*天

规则3:特殊符号后保留
    例如:邮箱 1~@ 表示只保留第一位和@之后的字段
     afterturn@wupaas.com --> a********@wupaas.com

行样式设置

给行设置样式

  • 行类型包括:第一行、最后一行、奇数行、偶数行、所有行
  • 样式类型包括:字体加粗、字体下划线、字体中划线、斜体字体、字体颜色、背景颜色
    • 字体加粗、字体下划线、字体中划线、斜体字体输入 true 和 false
    • 字体颜色、背景颜色输入具体颜色值,例如:#eeeeee

使用案例

导出多列头

在列设置中设置分组名,实现多列头,设计界面如下图所示

导出文件如下图所示

显示合计值

在列设置中选中是否统计该列,显示该列的合计值,注意不能设置后缀和数字格式化,设计界面如下图所示

1726106074747

导出文件如下图所示

1726105943835

设置时间格式

在列设置中设置导出时间格式和数据库格式,实现自定义时间格式,设计界面如下图所示

导出文件如下图所示

导出数据脱敏

在列设置中设置脱敏规则,实现数据脱敏,设计界面如下图所示

导出文件如下图所示

奇偶行不同颜色

在行样式设置中设置偶数行或奇数行颜色,实现奇偶行不同颜色,设计界面如下图所示

导出文件如下图所示

动态导出列

Excel 导出组件提供导出方法 exportExcel 导出 Excel,方法中的 columns 参数包含导出列信息。

  • columns 参数为空时,使用组件中定义的导出列
  • 使用 columns 参数自定义导出列,支持多列头模式
  • columns 参数支持数组,也支持逗号分隔的字符串
  • columns 参数中的列名是数据集的列名,显示在列设置的“标识”列中,如下图所示

列设置中的“标识”,如下图所示

动态导出列 JS 代码如下

react 代码

    onExportColBtnClick = (event) => {
        let columns = this.comp("pageData").getValue("showPrice") == 1 ? "name,unit,price,images" : "name,unit,images";
        this.comp("exportExcel5").exportExcel({ columns });
    }

vue 代码

let $page = usePage();
let pageData = useData("pageData");

let onExportColBtnClick = (event) => {
    let columns = pageData.getValue("showPrice") == 1 ? "name,unit,price,images" : "name,unit,images";
    $page.comp("exportExcel5").exportExcel({ columns });
}

导出文件如下图所示

模板导出

模板导出的数据来源必须选择“数据服务”,提供模板设置和行样式设置

模板设置

设置项 说明
文件类型 03版excel、07版excel、07版word 模板文件类型,也是导出的文件类型。03版excel拥有完整能力,07版excel不支持导出动态图片、不支持导出为PDF
是否输出 PDF 是、否 是,导出为 PDF 文件,否,导出和模板一样的文件
每行一个文件 是、否 导出主从数据时,每一条主数据和它的从数据导出为一个文件。如果一次导出多条主数据,会产生多个文件,这些文件压缩后,导出一个 zip 文件
每行一页 是、否(文件类型为 Word 时生效) 导出主从数据时,每一条主数据和它的从数据导出为一页。如果一次导出多条主数据,一个文档中会产生多页
输入全部的工作表 是、否(文件类型为 Excel 时生效) 是,模板文件中有几个 Sheet 导出几个 Sheet;否,只导出第一个 Sheet
工作表名称 字符串,多值时用逗号分开 定义导出的 Sheet 的名称
工作表位置 数字,多值时用逗号分开 和工作表名称同时使用,定义 Sheet 名称的索引
子表展现为表格 是、否 是否指定表格的渲染方式,默认采用 MultipleRowTableRenderPolicy 方式
渲染方式 多行渲染 MultipleRowTableRenderPolicy 循环渲染 LoopRowTableRenderPolicy 表格的两种渲染方式,显示效果一样,模板语法不同:多行渲染以{{?orderd}}开头,以{{/orderd}}结尾,使用{{productId}}渲染内容;循环渲染在表格开头使用{{orderd}}表示循环,使用[productId]渲染内容

行样式设置

行样式设置参考“标准导出”的行样式设置

使用案例

下面列举的都是导出主从数据,除了可以导出主从数据,还可以只导出主数据

准备主从数据
  • 准备主表数据集和从表数据集

  • 在主表数据集上添加输出数据集,查询主表数据时,可以同时获得从表数据

选择从表数据集,设置从表外键字段和主表主键字段的映射关系,这里定义的“名称”在模板中使用

  • 在主表数据组件上,选中全部数据列,包括主表的数据列和从表的数据列,使得查询主表数据时,同时查询从表数据

准备主从模板

主从模板分为两类:主从详情和主从列表

  • 主从详情:模板设计为显示一条主数据及它的从数据列表

  • 主从列表:模板设计为显示主数据列表和它的从数据列表

Excel 模板-主从详情
主表数据:使用”双大括号加列名“表示显示列,例如:订单编号{{orderNo}}
从表数据:使用{{$fe:maplist 开始循环,使用”t.从表 id.列名“表示显示列,使用}}结束循环

Excel 模板-主从列表
使用{{$fe:maplist开始循环,使用}}结束循环
主表数据:使用”t.列名“表示显示列,例如:订单编号 t.orderNo
从表数据:使用”t.从表 id.列名“表示显示列,例如:产品 t.orderd.productName

Word 模板-主从详情

支持两种渲染方式

  • 多行渲染 MultipleRowTableRenderPolicy
主表数据:使用”双大括号加列名“表示显示列,例如:订单编号{{orderNo}}
从表数据:使用{{?从表id}}开始循环,使用{{/从表 id}}结束循环,使用{{列名}}表示显示列,例如:产品{{productName}}
图片列:需要加 @ 前缀,例如:{{@image}}

  • 循环渲染 LoopRowTableRenderPolicy
主表数据:使用”双大括号加列名“表示显示列,例如:订单编号{{orderNo}}
从表数据:在表格开头使用{{从表id}}表示循环从表,使用[列名]表示显示列,例如:产品[productName]
图片列:需要加 @ 前缀,例如:{{@image}}

1730080579361

Word 模板-主从列表
使用{{?maplist}}开始循环,使用{{/maplist}}结束循环
主表数据:使用{{列名}}表示显示列,例如:订单编号{{orderNo}}
从表数据:使用{{?从表 id}}开始循环,使用{{/从表 id}}结束循环,使用{{列名}}表示显示列,例如:产品{{productName}}
图片列:需要加 @ 前缀,例如:{{@image}}

导出主从数据

将上一步中准备好的模板,上传到数据集中。在页面上添加模板数据组件,查询出要使用的模板

Excel 导出组件的“模板源设置-绑定数据列”属性绑定到模板数据组件。在导出设置中,导出模式选择“模板导出”,选择模板的文件类型,是否导出 PDF

特别说明:主从详情模板需要设置:每行一个文件或每行一页

  • 每行一个文件:一条主数据生成一个 Excel 或 Word 文件,一次导出多条主数据时,会导出一个 zip 文件,里面包括多个 Excel 或 Word 文件
  • 每行一页:只对 Word 模板起作用。一条主数据生成一页,一次导出多条主数据时,会导出一个 Word 文件,里面包括多页
导出选中数据

在表格组件上设置选中数据集

在页面上添加一个主数据的数据组件,清空自动模式,使用选中数据集的 ID 列表过滤主数据,如下图所示。

Excel 导出组件使用上一步添加的数据组件,这个数据组件不需要加载数据,Excel 导出组件获取这个数据组件上的过滤条件,在后端查询数据时使用,因此无需在前端加载数据

根据数据动态切换模板

根据数据来决定使用哪个模板,用模板数据集中的一列和业务数据集中的一列的值相等,作为使用模板的依据,使用 Excel 导出组件的“模板源设置-网络地址”属性实现,网络地址一般写为

/main/dbrest/模板数据集?$get=模板列.stream(0)&模板类型列=eq.${业务数据中的模板类型列}

本例中主数据集的 templateType 列作为模板类型,在 Excel 导出组件的模板源设置中,设置网络地址如下

/main/dbrest/exportTemplate?$get=template.stream(0)&kind=eq.${templateType}

其中

  • exportTemplate 是模板数据集的标识
  • template 是模板数据集中的模板列名
  • kind 是模板数据集中的模板类型列名
  • templateType 是业务数据集中的存有模板类型的列名

模板数据集定义,如下图所示

案例位置

桌面-页面-文件处理组件-导出组件.w

results matching ""

    No results matching ""