web-dev-qa-db-ja.com

読み取り専用モードでOpenPyXLを使用してExcelワークシートの列名を取得する

どうすれば検索できますか

  1. openpyxlの列名(最初の行のセルの値) 読み取り専用worksheet
    • CityPopulationCountry以下のワークシートの例
  2. openpyxl読み取り専用ワークブックのすべての列名?
    • CityPopulationCountry、ワークシート1のフレーム、および他のすべてのワークシートのその他の列名

Excelワークシートの例:

| City       | Population  |    Country   |
| -----------|------------ | ------------ |
| Madison    |   252,551   |     USA      |
| Bengaluru  | 10,178,000  |    India     |
| ...        |       ...   |     ...      |

コード例:

from openpyxl import load_workbook

wb = load_workbook(filename=large_file.xlsx, read_only=True)
sheet = wb.worksheets[0]

... (not sure where to go from here)

ノート:

  • Excelファイルには100万行以上あるため、読み取り専用を使用する必要があります(質問しないでください)。
  • 最終的に列の型を推測してExcelデータをPostgreSQLデータベースにインポートできるように、列名が欲しい
3
Ty Hitzeman

これにより、行1のすべてのものが印刷されます。

list_with_values=[]
for cell in ws[1]:
    list_with_values.append(cell.value)

何らかの理由で、記入された列文字のリストを取得したい場合は、次のようにできます。

column_list = [cell.column for cell in ws[1]]

2番目の質問について。ヘッダー値を「list_with_values」というリストに保存したと仮定します。

from openpyxl import Workbook
wb = Workbook()
ws = wb['Sheet']
#Sheet is the default sheet name, you can rename it or create additional ones with wb.create_sheet()
ws.append(list_with_values)
wb.save('OutPut.xlsx')
6
HaR

読み取り専用モードでは、ワークシートの任意の行または行のセットにすばやくアクセスできます。 iter_rows()メソッドを使用して、選択範囲を制限します。したがって、ワークシートの最初の行を取得するには:

rows = ws.iter_rows(min_row=1, max_row=1) # returns a generator of rows
first_row = next(rows) # get the first row
headings = [c.value for c in first_row] # extract the values from the cells
2
Charlie Clark