gpt4 book ai didi

c# - 迭代 Excel 引用范围的最快方法 ("C20:F22")

转载 作者:行者123 更新时间:2023-11-30 17:07:03 26 4
gpt4 key购买 nike

假设这个字符串变量是 Excel 中的一系列单元格:

string RangeReference = "C20:F22";

所以我需要 RangeReference 中的引用列表,如下所示:

List<string> GetAllReferencesInRange(string RangeReference) { }

对于这种情况,我们将有:

GetAllReferencesInRange(RangeReference);
//=
//C20
//D20
//E20
//F20
//C21
//D21
//E21
//F21
//C22
//D22
//E22
//F22

如果 RangeReference = "AG9:AI11"; 那么:

GetAllReferencesInRange(RangeReference);
//=
//AG9
//AH9
//AI9
//AG10
//AH10
//AI10
//AG11
//AH11
//AI11

那么最快的方法是什么?

更新:

我知道这个问题与 Excel 完全无关,但我使用 OpenXML SDK 2.5 来获取 Excel 文件和元素,所以也许 OpenXML 中有一种我不知道的简单方法。

最佳答案

我找到了一些东西,但我不知道这是不是最快的方法。

一开始我建立了一个字典,里面存储了一个列名和一个相关的数字:

Dictionary<string, ulong> ColumnsInNumber = new Dictionary<string, ulong>();
string Alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
ulong SpecialNumber = 0;

foreach (char FirstChar in Alphabet)
ColumnsInNumber.Add(FirstChar.ToString(), SpecialNumber++);

foreach (char FirstChar in Alphabet)
foreach (char SecondChar in Alphabet)
ColumnsInNumber.Add(string.Format("{0}{1}", FirstChar, SecondChar), SpecialNumber++);

foreach (char FirstChar in Alphabet)
foreach (char SecondChar in Alphabet)
foreach (char ThirdChar in Alphabet)
ColumnsInNumber.Add(string.Format("{0}{1}{2}", FirstChar, SecondChar, ThirdChar), SpecialNumber++);

在 Excel 2010 中,最后一列名称是“XFD”,在上面我们将数字设置为从“A”到“ZZZ”的列

所以我们可以迭代行和列:

string FirstColumn = GetColumnName(GetFirstCellReference(RangeReference));
string LastColumn = GetColumnName(GetLastCellReference(RangeReference));
uint FirstRow = GetRowNumber(GetFirstCellReference(RangeReference));
uint LastRow = GetRowNumber(GetLastCellReference(RangeReference));

List<string> Result = new List<string>();

for (uint row = FirstRow; row <= LastRow; row++)
{
for (ulong column = ColumnsInNumber[FirstColumn]; column <= ColumnsInNumber[LastColumn]; column++)
{
string ColumnName = ColumnsInNumber.Where(kv => kv.Value == column).FirstOrDefault().Key;
Result.Add(string.Format("{0}{1}", ColumnName, row));
}
}

关于c# - 迭代 Excel 引用范围的最快方法 ("C20:F22"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14908248/

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