这本来算是一个很简单的流程,之所以写这篇文章,是因为列出表中的行数限制为256条,若要获取所有行,需要启用分页.
参考微软官方的Excel connector的已知问题于限制
用途:分割的文件可以使用邮件发送给不同的收件人,可以调用API写入到数据库或第三方系统 等.
下面直接创建flow.
1. 添加手动触发器.
2. 添加 List rows present in a table, 重点:启用分页.

分页设置:

3. 添加Select选择需要的列.

perl
{
"type": "Select",
"inputs": {
"from": "@outputs('List_rows_present_in_a_table')?['body/value']",
"select": {
"OrderNo": "@item()?['OrderNumber']",
"Line": "@item()?['LineNumber']"
}
},
"runAfter": {
"List_rows_present_in_a_table": [
"Succeeded"
]
}
}
4. 初始化循环变量
- 初始化变量:名称=startIndex,类型=Integer,值=0
- 初始化变量:名称=fileCount,类型=Integer,值=1
5. 添加Do until直至处理完所有行.

ini
Until= variables('startIndex') >= length(body('Select'))
6. 循环内部:
a. 添加一个Compose
less
take( skip(body('Select'), variables('startIndex')),200)
b.添加 Create CSV table
css
{
"type": "Table",
"inputs": {
"from": "@outputs('Compose')",
"format": "CSV"
},
"runAfter": {
"Compose": [
"Succeeded"
]
}
}
c. 添加 create file.

ini
File Name= concat('output_', string(variables('fileCount')), '.csv')
File Content = body('Create_CSV_table')
d. 添加: Increment startIndex by 200.
e. 添加: Increment fileCount by 1.
流程中,可以使用chunk函数来操作行数的分割.
对于动态内容的Excel文件,可以添加标记列来标记是否已存在在分割的文件中 (Excel中的每一行需要一个唯一的ID). 当记录被写入CSV文件后,标记为是,或者使用日期和时间生成字符串来标识,这样不用每次都读取所有记录.
流程概览如下:
