我正试图尽可能高效地自动化Excel合并和转换( process )过程。目前,我正在使用Interop Excel作为多维数组读取电子表格:
Excel.Range range = ws.UsedRange;
object[,] worksheetData = (object[,]) range.Value2;我知道不推荐互操作,但我一直与其他库有问题,而且还需要使用Interop将工作簿转换为这些库可以使用的文件类型(大多数需要.xlsx和我正在使用的工作簿中的所有可能的文件类型)。
因此,每个工作簿(我将合并多达10个工作簿)将作为自己的2 2Darray阅读。现在我有了一个包含所有数据的2D数组,我只需要识别我需要的目标列,并按指定的顺序提取这些列(这样就可以将它们与其他数组组合/合并)。
是否有办法创建每个数组的副本,只从每个多维数组中按指定的顺序选择某些列,以便在以后合并复制数组?
我不知道如何去做这件事,所以任何和所有的提示都是感激的!
发布于 2020-02-13 04:29:27
除了神秘的Linq答案
您还可以使用https://learn.microsoft.com/en-us/dotnet/csharp/iterators扩展方法。
public static class Extensions
{
public static IEnumerable<T> GetColumn<T>(this T[,] array, int col)
{
for (var i = 0; i < array.GetLength(0); i++)
yield return array[i, col];
}
}使用
var cols = someArray.GetColumn(2);https://stackoverflow.com/questions/60200309
复制相似问题