gpt4 book ai didi

c# - 以编程方式将 Excel 电子表格中的数字字符串转换为实际数字

转载 作者:行者123 更新时间:2023-11-30 21:06:17 25 4
gpt4 key购买 nike

我有一些 C# 代码,它以编程方式遍历电子表格中的所有单元格,并将任何数字字符串值转换为实际数字。它似乎有效,但运行速度相当慢(在 40 列乘 3000 行的电子表格上,运行需要一分钟多的时间):

private void SetNumberStringsToValues(Excel.Range range)
{
object[,] values = range.get_Value(Excel.XlRangeValueDataType.xlRangeValueDefault);

Parallel.For(1, range.Columns.Count, i =>
{
for (var j = 1; j < range.Rows.Count; j++)
{
var doubleValue = 0.0;
if (double.TryParse(values[j, i].ToString(), out doubleValue))
values[j, i] = doubleValue;
}
});
range.set_Value(Excel.XlRangeValueDataType.xlRangeValueDefault, values);
}

有谁知道更有效的方法吗?

最佳答案

尝试缓存行数而不是在循环内调用 range.Rows.Count。 range 实例中可能存在一些内部同步,当从多个线程访问时,这些实例将受到争用。

另外,我很好奇你为什么从 1 而不是 0 开始枚举?这不会错过第一行和第一列吗?

...

var columns = range.Columns.Count;
var rows = range.Rows.Count;

Parallel.For(1, columns + 1, i =>
{
for (var j = 1; j <= rows; j++)
{
var doubleValue = 0.0;
if (double.TryParse(values[j, i].ToString(), out doubleValue))
values[j, i] = doubleValue;
}
});

...

关于c# - 以编程方式将 Excel 电子表格中的数字字符串转换为实际数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11284064/

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