EDIT: Ben itiraf etmeliyim hissediyorum, birkaç diğerleri-me bırakmadı tarafından işaret olarak yorumlar yani Cevabımın önceki sürümünde (kabul ettiniz), 702
numaralı sütunun ('ZZ'
numaralı Excel sütununa karşılık gelen) sütun numaralarını doğru şekilde kullanmasını engelleyen bir hata oluştu. Bu yüzden, doğruluk çıkarları doğrultusunda, aşağıdaki kodda, şu anda diğer cevapların çoğu gibi bir döngü içerdiği tespit edilmiştir.
Büyük olasılıkla, önceki sürümde, sorunla karşılaşmak için yeterince büyük sütun numarası kullanmamışsınızdır. FWIW, MS specs for the current version of Excel, 16,384 adede kadar sütun içeren çalışma sayfalarını desteklediğini söylüyor (Excel sütunu 'XFD'
).
LETTERS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
def excel_style(row, col):
""" Convert given row and column number to an Excel-style cell name. """
result = []
while col:
col, rem = divmod(col-1, 26)
result[:0] = LETTERS[rem]
return ''.join(result) + str(row)
if __name__ == '__main__':
addresses = [(1, 1), (1, 26),
(1, 27), (1, 52),
(1, 53), (1, 78),
(1, 79), (1, 104),
(1, 18253), (1, 18278),
(1, 702), # -> 'ZZ1'
(1, 703), # -> 'AAA1'
(1, 16384), # -> 'XFD1'
(1, 35277039)]
print('({:3}, {:>10}) --> {}'.format('row', 'col', 'Excel'))
print('==========================')
for row, col in addresses:
print('({:3}, {:10,}) --> {!r}'.format(row, col, excel_style(row, col)))
Çıktı: kendi kod sade ve takip edilmesi kolay görünüyor beri
(row, col) --> Excel
========================
( 1, 1) --> 'A1'
( 1, 26) --> 'Z1'
( 1, 27) --> 'AA1'
( 1, 52) --> 'AZ1'
( 1, 53) --> 'BA1'
( 1, 78) --> 'BZ1'
( 1, 79) --> 'CA1'
( 1, 104) --> 'CZ1'
( 1, 18253) --> 'ZZA1'
( 1, 18278) --> 'ZZZ1'
( 1, 702) --> 'ZZ1'
( 1, 703) --> 'AAA1'
( 1, 16384) --> 'XFD1'
( 1, 35277039) --> 'BYEBYE1'
@MartijnPieters bunu biliyorum. Değişken değerlerini int değerleriyle değiştirdim, ancak bu soru reddetmek anlamına gelmiyor. –
Sorunuzda oy kullanmadım. Lütfen yorum yapma ve oylama işleminin aynı şey olduğunu düşünmeyin. –
Sorunuz * biraz belirsizdir, ancak belki de belki de biçimlendirmeye ve dilbilgisine daha fazla düşer. Kod sağladınız, beklenen sonuç ve sonuç gözlemlediniz, ama elde etmeye çalıştığınız şey bana açık değil. –