我正在更新一个Excel外接程序(XLL),它需要处理工作簿的每个Excel工作表上的UsedRange.出于性能和 solidity 的考虑,我已经从以前的循环遍历UsedRange区域中的每个Range对象的行为切换到读取UsedRange. Formula和UsedRange.Value2作为object [*,*]array.这种新方法仍然相当慢,我怀疑是因为对象[*,*]数组的"体积".
我的代码需要判断每个Formula作为逐个单元格循环中的主要活动(实现为行、列嵌套循环),并且只有在满足某些条件时才需要判断Value2数据.因此,我试着看看如何将UsedRange. Formula数组直接映射到字符串[*,*]数组,因为我认为这样循环会更快一些?
我目前使用的是:
object[,] formulas = (object[,])ws.UsedRange.Formula;
int row_count = formulas.GetUpperBound(0);
int col_count = formulas.GetUpperBound(1);
然后我在公式数组上循环,做我需要做的事情.但是Excel Formula数据总是一个字符串(或空字符串),所以它应该是非常直接的创建字符串[*,*].但是,这个代码不起作用:
string[,] formulas_str = (string[,])formulas;
有没有可能像我在这里想做的那样对字符串[*,*]进行数组转换?如果我必须一个一个的go 做它,那么我做它没有任何好处.