2017-08-16 12 views
3

Excel 2013でデータの列を読み込むためにpython xlwingsを使用しています。Aの列には数値が入ります。この列をPythonリストpy_listにインポートするには、次のコードがあります。Excelの列のデータをPythonのリストに読み込みます。

import xlwings as xw 

wb = xw.Book('BookName.xlsm') 
sht = xw.Book('SheetName') 
py_list = sht.range('A2:A40').value 

上記のコードは、列データにA2:A40が入力されている場合に機能します。ただし、列データは増加し続ける可能性があります。データは伸びてA2:A46またはA2:A80になります。最後の行は空です。コンパイル時に、この列にいくつのデータ行があるかは分かりません。

最後の行の空のセルを検出してデータの範囲をpy_listで読み取れるようにコードを変更するにはどうすればよいですか?

他のpythonライブラリを使用して、xlwings以外のExcelデータを読むことはできます。私はpython v3.6を使用しています

答えて

1

多くの試行錯誤の末、私は自分の質問に答えます。

この質問の鍵は、列Aの行数を調べることです。

以下のxlwingsを使用して、この1行で行数を見つけることができます。

rownum = sht.range('A1').end('down').last_cell.row 

答えを得るためには、APIドキュメントを慎重に読む必要があります。

http://docs.xlwings.org/en/stable/api.html#xlwings.Range

行数が見つかったら、残りの部分を把握することは容易です。

2

これはcsvまたはexcelからファイルを読み込むことに関してたくさん言いますが、私は​​を使用します。

import pandas as pd 

df = pd.read_excel('filename.xlsm', sheetname=0) # can also index sheet by name or fetch all sheets 
mylist = df['column name'].tolist() 

代替は、おそらく名前付き範囲を代わり'A2:A40'のエクセルのオフセット等soemthingを使用して動的式を使用することであろうか?

+0

シート名が 'SheetName'の場合、どのようにコードを修正できますか?これは正しいです? 'df = pd.read_excel( 'filename.xlsm'、sheetname = 'SheetName')' – user3848207

+1

私にとっては、機能の詳細はこちら:https://pandas.pydata.org/pandas-docs/stable/ generated/pandas.read_excel.html – Stael

+0

あなたの答えは、パスワードで保護されていないExcelファイルで動作します。残念ながら、私のExcelファイルはパスワードで保護されています。それにもかかわらず、私はあなたの答えをアップアップしました。 – user3848207

関連する問題