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

如何导出Excel数据模型中的超大数据表?有无直接导出或C#实现方案?

Excel数据模型超大表导出CSV及C#访问方案

Excel内置导出方法(无需Power BI)

方法1:Power Pivot直接导出(适配所有支持Power Pivot的Excel版本)

  • 打开目标Excel文件,点击「Power Pivot」选项卡,选择「管理」进入数据模型管理界面
  • 左侧表列表选中你需要导出的超大表,点击顶部菜单栏的「文件」→「导出到CSV」
  • 选择本地存储路径后即可完成导出,该操作不受Excel工作表104万行上限限制,全量数据会直接写入CSV文件

如果你找不到Power Pivot选项卡,需要先到「文件」→「选项」→「自定义功能区」,勾选右侧列表中的「Power Pivot」启用即可。

方法2:Power Query导出(适配所有版本)

  • 点击「数据」选项卡→「获取数据」→「启动Power Query编辑器」
  • 新建空白查询,公式栏输入= Excel.CurrentWorkbook()回车,找到对应目标表的行,点击右侧Table加载全表
  • 不要选择直接上载到工作表,点击「关闭并上载至」→勾选「仅创建连接」
  • 回到Excel主界面,在右侧「查询&连接」面板右键该查询,选择「导出到CSV」即可

C#自定义访问导出实现

可以实现,Excel数据模型底层是和Power BI同源的VertiPaq内嵌SSAS实例,你可以通过官方提供的相关库直接访问:

依赖库

先安装NuGet包:Microsoft.AnalysisServices.AdomdClient(.NET Framework)或Microsoft.AnalysisServices.AdomdClient.NetCore(.NET Core/.NET 5+)

核心实现逻辑

  1. 读取Excel启动时创建的本地内嵌SSAS实例端口,或者直接解析xlsx文件读取数据模型
  2. 构造连接字符串连接到数据模型,执行DAX查询获取全表数据
  3. 流式写入数据到CSV文件,避免内存溢出

示例代码

using System.IO;
using System.Text;
using System.Linq;
using Microsoft.AnalysisServices.AdomdClient;

// 连接字符串中的端口号需要替换为你当前Excel进程对应的内嵌SSAS实例端口
string connStr = "Provider=MSOLAP;Data Source=localhost:xxxx;Catalog=Microsoft Excel Workbook";
string exportPath = @"C:\export\target_table.csv";
string tableName = "你的目标表名";

using (var connection = new AdomdConnection(connStr))
{
    connection.Open();
    var command = new AdomdCommand($"EVALUATE '{tableName}'", connection);
    
    using (var reader = command.ExecuteReader())
    using (var writer = new StreamWriter(exportPath, false, Encoding.UTF8))
    {
        // 写入CSV表头
        var headers = Enumerable.Range(0, reader.FieldCount).Select(i => reader.GetName(i));
        writer.WriteLine(string.Join(",", headers.Select(h => $"\"{h.Replace("\"", "\"\"")}\"")));
        
        // 逐行写入数据,无需全量加载到内存
        while (reader.Read())
        {
            var rowValues = Enumerable.Range(0, reader.FieldCount)
                .Select(i => reader.IsDBNull(i) ? "" : reader.GetValue(i).ToString().Replace("\"", "\"\""));
            writer.WriteLine(string.Join(",", rowValues.Select(v => $"\"{v}\"")));
        }
    }
}

如果需要无需打开Excel直接读取xlsx中的数据模型,可以额外引入Microsoft.AnalysisServices.Tabular库直接解析文件,适合批量导出场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:18:03