スプレッドシートのすべてのセルをプログラムでループし、数値の文字列値を実際の数値に変換するC#コードがいくつかあります。動作しているように見えますが、実行速度はかなり遅くなります(40列×3000行のスプレッドシートでは、実行に1分以上かかります)。
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);
}
誰かがこれを行うためのより効率的な方法を知っていますか?