如何在Logic Apps中将CSV文件读取并转换为数组
Azure Logic Apps 读取CSV文件为数组格式操作指南
方案1:使用内置「解析CSV」操作(推荐,适配所有主流Logic Apps版本)
- 第一步:通过对应的存储连接器(Azure Blob Storage、OneDrive、SFTP等)执行
获取文件内容操作,读取目标CSV文件,得到二进制格式的文件主体 - 第二步:使用表达式将二进制内容转为明文字符串,通用表达式为
base64ToString(上一步获取文件内容的输出主体),如果CSV为非UTF-8编码,替换为对应解码函数即可 - 第三步:搜索并添加「解析CSV」内置操作,将上一步得到的明文字符串填入CSV内容输入项
- 若CSV首行是表头,无需额外配置,操作会自动识别表头作为输出对象的键名
- 若CSV无表头,开启自定义表头开关,按列顺序填写自定义表头即可
- 操作执行完成后,输出的
body字段就是结构化的数组格式,每个数组元素对应CSV的一行数据
方案2:手动拆分实现(适配无内置解析操作的老旧版本)
如果你的Logic Apps实例没有内置解析CSV操作,可以通过表达式自行拆分生成数组:
- 前置步骤同方案1,先将CSV文件转为明文字符串,存入字符串类型变量
csvContent - 按换行符拆分CSV为行数组,表达式:
split(variables('csvContent'), decodeUriComponent('%0A')),如果是Windows格式的CSV,换行符替换为decodeUriComponent('%0D%0A') - 处理表头:取行数组首个元素
first(行数组),按逗号拆分得到表头数组:split(first(行数组), ',') - 初始化一个数组类型变量
csvResult用于存储最终结果 - 添加
For each循环,遍历范围为跳过首行后的所有行数据:skip(行数组, 1)- 循环内部将当前行按逗号拆分得到列值数组:
split(items('For_each'), ',') - 通过
select操作或setProperty函数,将表头数组的元素作为键、列值数组元素作为值,生成单行JSON对象 - 将生成的JSON对象追加到
csvResult变量中
- 循环内部将当前行按逗号拆分得到列值数组:
快速获取非结构化行数组表达式
如果你不需要键值对结构,只需要每行内容组成的数组,可以直接在编写操作中填入以下表达式:
take( skip( split(base64ToString(triggerBody()?['Content']), decodeUriComponent('%0A')), 1 ), sub(length(split(base64ToString(triggerBody()?['Content']), decodeUriComponent('%0A'))), 1) )
上述表达式会自动跳过首行表头,直接返回所有数据行组成的数组,可根据实际场景调整是否保留首行
注意事项
- 如果CSV内容中包含引号包裹的带逗号的字段,仅可使用方案1的内置解析操作,手动拆分方案会出现字段错位问题
- 处理体积超过100MB的CSV文件时,需要提前开启存储连接器的分块下载配置,避免超出工作流单操作负载上限
内容的提问来源于stack exchange,提问作者D Dumpling
相关产品推荐
相关产品推荐

