如何导出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+)
核心实现逻辑
- 读取Excel启动时创建的本地内嵌SSAS实例端口,或者直接解析xlsx文件读取数据模型
- 构造连接字符串连接到数据模型,执行DAX查询获取全表数据
- 流式写入数据到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
相关产品推荐
相关产品推荐

