web-dev-qa-db-ja.com

python)でExcel.xlsxファイルを開いて読み取る

pythonでExcelの.xlsxファイルを開こうとしていますが、その方法が見つかりません。pandasを使用してみましたが、 NumPyというライブラリを使用したいのですが、numpyをインストールしようとしましたが、それでもnumpyが見つかりません。

Xlrdライブラリも使用してみましたが、次のトレースバックがあります。

Traceback (most recent call last):
  File "C:\test.py", line 3, in <module>
    book = open_workbook('test.xlsx')
  File "C:\Python27\lib\site-packages\xlrd\__init__.py", line 370, in open_workbook
    biff_version = bk.getbof(XL_WORKBOOK_GLOBALS)
  File "C:\Python27\lib\site-packages\xlrd\__init__.py", line 1323, in getbof
    raise XLRDError('Expected BOF record; found 0x%04x' % opcode)
XLRDError: Expected BOF record; found 0x4b50

XLRDが.xlsxファイルを読み取れないためだと思いますか?

誰かアイデアがありますか?

編集:

import csv
with open('test.csv', 'rb') as csvfile:
    data = csv.reader(csvfile, delimiter=',')
    for row in data:
        print "------------------"
        print row
        print "------------------"
        for cell in row:
            print cell
6
Ryflex

たぶん、.xlsxを.csvファイルにエクスポートできますか?

次に、試すことができます:

import csv
with open('file.csv','rb') as file:
    contents = csv.reader(file)
    [x for x in contents]

これは便利かもしれません: http://docs.python.org/2/library/csv.html#csv.reader

お役に立てば幸いです。

編集:

F13などの特定のセルを検索する場合は、マトリックスのようなネストされたリストを作成し、それらが各要素を参照するようにすることができます。

import csv
with open('file.csv','rb') as file:
    contents = csv.reader(file)
    matrix = list()
    for row in contents:
        matrix.append(row)

次に、matrix[5][12]を使用してF13にアクセスします。

追伸:私はこれをテストしませんでした。 「row」が各セルを要素とするリストの場合、すべての行をマトリックスに追加し続けるため、最初のインデックスは行番号、2番目のインデックスは列番号です。

11
Thales MG

linuxディストリビューションを使用しているようです。私も同じ問題を抱えていましたが、これは「xlwt」ライブラリでは発生せず、「xlrd」でのみ発生します。私がしたことはこの問題を解決する正しい方法ではありませんが、それはうまくいけばすぐにその質問に答えることができればうまくいきます;私はWindowsに「xlrd」をインストールし、フォルダを取り、LinuxのLinuxに貼り付けました私のpythonコードがあり、それが機能したディレクトリ。

2
toufikovich

他の人もこれを読んでいることを私は知っているので-

次のモジュールをインストールできます(自動的にはありません) https://pypi.python.org/pypi/openpyxl

あなたはそれを使用する方法の素晴らしい内訳を得るために以下を読むことができます

https://automatetheboringstuff.com/chapter12/

2
Elisma