Power Automate将SFTP的CSV转SharePoint XLSX失败求助
解决Power Automate中CSV转XLSX无法打开的问题
以下是几个可行的解决方案,针对你遇到的“生成XLSX无法打开”问题:
方案一:用Excel Online直接转换CSV到XLSX
- 先将SFTP获取的CSV文件保存到SharePoint的临时目录(如
Documents/CSV_Temp) - 添加
Excel Online (Business) - 转换文件动作,选择刚才的CSV文件,目标格式指定为XLSX - 最后用
SharePoint - 创建文件或更新文件,将转换后的XLSX存到目标位置
核心:必须先把CSV放到SharePoint/OneDrive,Excel Online才能识别并完成格式转换
方案二:用Office Script直接生成XLSX
- 通过SFTP动作的
获取文件内容,拿到CSV的文本内容 - 在SharePoint提前准备一个空白XLSX模板文件(如
Template.xlsx) - 添加
Excel Online (Business) - 运行脚本动作,选择模板文件,传入CSV内容作为参数 - 参考Office Script代码:
function main(workbook: ExcelScript.Workbook, csvContent: string) { const rows = csvContent.split('\n').filter(row => row.trim() !== ''); if (rows.length === 0) return; const sheet = workbook.getWorksheets()[0]; sheet.getUsedRange()?.clear(ExcelScript.ClearApplyTo.all); // 根据你的CSV分隔符调整,比如分号就换成';' rows.forEach((row, rowIndex) => { const cells = row.split(','); sheet.getRangeByIndexes(rowIndex, 0, 1, cells.length).setValues([cells]); }); }
- 用
SharePoint - 另存为文件将修改后的模板存为目标XLSX文件
方案三:两步转换(XLS转XLSX)的可行实现
- 先完成你已实现的步骤:将CSV转成XLS并保存到SharePoint
- 添加
Excel Online (Business) - 打开工作簿动作,选择这个XLS文件 - 再添加
Excel Online (Business) - 保存工作簿动作,选择保存为XLSX格式,指定目标路径
此方法依赖Excel Online的原生格式转换能力,避免直接修改扩展名导致的文件损坏
关键注意事项
- 绝对不要直接修改文件扩展名(如把
.csv改成.xlsx),这种操作只是修改文件名,文件本质还是CSV,必然无法打开 - 确保Excel Online拥有SharePoint站点和SFTP文件的访问权限
- 若CSV使用特殊分隔符(如分号、制表符),需在转换动作或脚本中对应调整拆分规则
内容的提问来源于stack exchange,提问作者RustyMc
相关产品推荐
相关产品推荐

