如何在C#中将数字转换为Excel列名,而不使用自动从Excel直接获取值.
Excel 2007的可能范围为1到16384,即它支持的列数.结果值应采用excel列名称的形式,例如A,AA,AAA等.
我创建了一个函数,生成一个连续递增的字母表列表.A,B,C ......,Z.在Z之后,它转到AA,AB,AC ...... AZ.这种模式重复.这类似于MS Excel的列名.目前,此函数生成一个有限的字母表列表.
_column_name_generator() = ['A', 'B', ..., 'AA', 'AB', ..., 'BA', 'BB', ..., 'CV']
Run Code Online (Sandbox Code Playgroud)
然后我可以结合一些有限列表迭代它,例如0-10.请参阅下面的代码.我想要的是创建一个生成器,它将为我提供一个无限长的递增字母表列表.
import string
def _column_name_generator():
column_names = []
for x in range(0, 100):
if x < 26:
column_names.append(string.ascii_uppercase[x % 26])
else:
column_names.append(column_names[x/26 - 1] + string.ascii_uppercase[x % 26])
return column_names
container = []
for column_name, num in zip(_column_name_generator(), range(0, 10)):
container.append(column_name + str(num))
print _column_name_generator()
print container
container = ['A0', 'B1', 'C2', 'D3', 'E4', 'F5', 'G6', 'H7', 'I8', 'J9']
Run Code Online (Sandbox Code Playgroud)