You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Power Query M的Csv.Document()读取同文件内指定工作表数据?

用Power Query的Csv.Document读取同文件工作表中的CSV内容

问题描述

我想使用Power Query的Csv.Document()函数,读取同一Excel文件内指定工作表中的CSV格式数据。之前我通过以下方式读取磁盘中外部CSV文件:

= Csv.Document(File.Contents("C:\Users\foo\OneDrive\Desktop\test.csv"),[Delimiter=",", Columns=1, Encoding=65001])

但文件通过OneDrive共享,不同用户打开时路径不一致,所以更倾向于把CSV内容粘贴到当前文件的某个工作表中,再用Power Query读取并导入数据模型。本质上就是要替换掉File.Contents("C:\Users\foo\OneDrive\Desktop\test.csv"),改成读取同文件内工作表数据的方式。

待粘贴的CSV内容示例(规范格式):

"created","currency","gross","fee","net","reporting_category","customer_facing_amount","customer_facing_currency","shipping_address_country","payment_metadata[order_id]"
"2024-01-01 23:56:03","sek","4262.52","65.74","4196.78","charge","390.83","eur","ES","2955"
"2024-01-02 12:49:26","sek","926.66","24.97","901.69","charge","85.00","eur","GB","2958"

解决方案

实现步骤

  1. 准备工作表:将CSV内容粘贴到当前Excel文件的某个工作表(建议命名为CSV_Content),确保内容从A1单元格开始,无多余空行。
  2. 编写Power Query M代码:通过Excel.CurrentWorkbook()读取工作表数据,转换为完整文本后传入Csv.Document()解析。

最终M代码

let
    // 读取当前工作簿中指定工作表的数据
    Source = Excel.CurrentWorkbook(){[Name="CSV_Content"]}[Content],
    // 将工作表每行内容合并为完整的CSV文本(换行符分隔)
    CombinedCSVText = Text.Combine(Source[Column1], "#(lf)"),
    // 解析CSV文本
    ParsedData = Csv.Document(CombinedCSVText, [Delimiter=",", Encoding=65001])
in
    ParsedData

代码说明

  • Excel.CurrentWorkbook(){[Name="CSV_Content"]}[Content]:定位并读取当前工作簿中指定名称的工作表,返回包含每行内容的表结构,Column1对应CSV内容所在的A列。
  • Text.Combine(Source[Column1], "#(lf)"):把工作表中每行的文本用换行符连接,模拟外部CSV文件的完整文本格式。
  • Csv.Document(...):保持和原外部文件读取一致的参数配置,仅将数据源替换为合并后的CSV文本。

注意事项

  • 如果CSV内容在工作表中不是A列(即Column1),需根据实际列名修改Source[Column1]。
  • 工作表名称需和代码中的"CSV_Content"完全匹配(区分大小写)。

内容的提问来源于stack exchange,提问作者user1853417

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 23:25:29