gpt4 book ai didi

c# - 从 VSTO 项目中的 Excel 工作簿中读取五十万条记录

转载 作者:太空狗 更新时间:2023-10-30 00:20:37 24 4
gpt4 key购买 nike

我正在尝试使用 VSTO 并通过创建 Visual Studio 2010 Office 工作簿项目在 Excel 中构建模拟工具。本工作簿中的一个工作表将包含大约 50 万条记录。理想情况下,我想读取所有在模拟中使用它们的记录,然后输出一些统计数据。到目前为止,当我尝试获取整个范围然后一次性将单元格取出时,我遇到了 OutOfMemory 异常。关于我如何阅读所有数据或这样做的建议,有人有其他想法吗?

这是我的代码:

Excel.Range 范围 = Globals.shData.Range["A2:AX500000"];

数组值 = (Array)range.Cells.Value;

最佳答案

如何批量获取,并在内存中组装一个内存占用量稍低的模型?

var firstRow = 2;
var lastRow = 500000;
var batchSize = 5000;
var batches = Enumerable
.Range(0, (int)Math.Ceiling( (lastRow-firstRow) / (double)batchSize ))
.Select(x =>
string.Format(
"A{0}:AX{1}",
x * batchSize + firstRow,
Math.Min((x+1) * batchSize + firstRow - 1, lastRow)))
.Select(range => ((Array)Globals.shData.Range[range]).Cells.Value);

foreach(var batch in batches)
{
foreach(var item in batch)
{
//reencode item into your own object collection.
}
}

关于c# - 从 VSTO 项目中的 Excel 工作簿中读取五十万条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10385354/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com