49

Excelの座標値をopenpyxlの行番号と列番号に変換しようとしています。

たとえば、セルの座標がD4の場合、将来の操作に使用する対応する行と列の番号を見つけたいと思います。行= 3、列= 3の場合、行番号を簡単に取得できます。 ws.cell('D4').rowこれを使用する4と、問題になります。しかし、同様の引数ws.cell('D4').columnが返さDれ、後続の操作のためにこれをint形式に簡単に変換する方法がわかりません。だから私はあなたにstackoverflowの賢い人々に目を向けます。手伝って頂けますか?

4

9 に答える 9

76

あなたが望むのはopenpyxl.utils.coordinate_from_string()openpyxl.utils.column_index_from_string()

from openpyxl.utils.cell import coordinate_from_string, column_index_from_string
xy = coordinate_from_string('A4') # returns ('A',4)
col = column_index_from_string(xy[0]) # returns 1
row = xy[1]
于 2012-10-15T19:39:30.423 に答える
69

openpyxl には、数値を列文字に変換するget_column_letterという関数があります。

from openpyxl.utils import get_column_letter
print(get_column_letter(1))

1 --> あ

50 --> 斧

1234-- AUL

私はそれを次のように使用しています:

from openpyxl import Workbook
from openpyxl.utils import get_column_letter

#create excel type item
wb = Workbook()
# select the active worksheet
ws = wb.active

counter = 0
for column in range(1,6):
    column_letter = get_column_letter(column)
    for row in range(1,11):
        counter = counter +1
        ws[column_letter + str(row)] = counter

wb.save("sample.xlsx")

ここに画像の説明を入力

于 2015-11-08T20:30:46.957 に答える
-4

純粋な Python を使用できます。

cell = "D4"
col = ord(cell[0]) - 65
row = int(cell[1:]) - 1

これはord、文字を受け取ってその ASCII コードを返す関数を使用します。ASCII では、文字Aは 65、66 などBです。

于 2012-10-15T19:29:16.780 に答える