簡體   English   中英

在python中打開並讀取excel .xlsx文件

[英]Opening and reading an excel .xlsx file in python

我正在嘗試使用python打開一個excel .xlsx文件,但我無法找到辦法,我嘗試使用pandas但是它想要使用一個名為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

也許您可以將.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

希望有所幫助!

編輯:

如果你想找到一個spectific單元格,比如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。

PS:我沒試過這個。 如果“row”是一個列表,其中每個單元格都作為一個元素,則繼續將所有行追加到矩陣中,因此第一個索引是行號,第二個索引是列號。

看來你是在Linux發行版上。 我也有同樣的問題,“xlwt”庫不會發生這種情況,但只能使用“xlrd”。 我所做的並不是解決這個問題的正確方法,但它使得事情暫時有效,希望很快就能回答這個問題;我在Windows上安裝了“xlrd”並將文件夾粘貼在Linux上我的python代碼所在的目錄,它的工作原理。

因為我知道其他人也會讀這個 -

您可以安裝以下模塊(它不會自動安裝) https://pypi.python.org/pypi/openpyxl

您可以閱讀以下內容以獲得有關如何使用它的詳細信息

https://automatetheboringstuff.com/chapter12/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM