gpt4 book ai didi

c# - 在 C# 中生成 Excel 列字母的最快函数

转载 作者:IT王子 更新时间:2023-10-29 04:02:57 29 4
gpt4 key购买 nike

接受 int 并返回包含一个或多个字母的字符串以用于 Excel 函数的最快的 c# 函数是什么?例如,1 返回“A”,26 返回“Z”,27 返回“AA”等。

这被调用了数万次,占用了生成包含许多公式的大型电子表格所需时间的 25%。

public string Letter(int intCol) {

int intFirstLetter = ((intCol) / 676) + 64;
int intSecondLetter = ((intCol % 676) / 26) + 64;
int intThirdLetter = (intCol % 26) + 65;

char FirstLetter = (intFirstLetter > 64) ? (char)intFirstLetter : ' ';
char SecondLetter = (intSecondLetter > 64) ? (char)intSecondLetter : ' ';
char ThirdLetter = (char)intThirdLetter;

return string.Concat(FirstLetter, SecondLetter, ThirdLetter).Trim();
}

最佳答案

我目前在 Excel 2007 中使用它

public static string ExcelColumnFromNumber(int column)
{
string columnString = "";
decimal columnNumber = column;
while (columnNumber > 0)
{
decimal currentLetterNumber = (columnNumber - 1) % 26;
char currentLetter = (char)(currentLetterNumber + 65);
columnString = currentLetter + columnString;
columnNumber = (columnNumber - (currentLetterNumber + 1)) / 26;
}
return columnString;
}

public static int NumberFromExcelColumn(string column)
{
int retVal = 0;
string col = column.ToUpper();
for (int iChar = col.Length - 1; iChar >= 0; iChar--)
{
char colPiece = col[iChar];
int colNum = colPiece - 64;
retVal = retVal + colNum * (int)Math.Pow(26, col.Length - (iChar + 1));
}
return retVal;
}

正如其他帖子中提到的,结果可以被缓存。

关于c# - 在 C# 中生成 Excel 列字母的最快函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/837155/

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