urllib2 - 计算.xlsx文件中的行数 - python

时间:2018-04-27 06:34:56

标签: python urllib

file_url = 'http://127.0.0.1:8000/media/temp/aggregate_bill_export_20180427055420580970.xlsx'
meta = urllib.urlopen(file_url)

total_records = len(meta.readlines())

print total_records

我得到的输出: 出[97]:20

但是这个文件只包含10条记录。但是,如果是.csv文件,它会返回正确的计数。请建议如何处理.xlsx文件。 谢谢!

3 个答案:

答案 0 :(得分:1)

您无法以阅读普通文本文件的方式阅读xlsx文件。您需要使用xlrd模块。

首先获取文件,然后使用xlrd模块读取xlsx

In [12]: import requests

In [13]: import urllib

In [14]: import xlrd

In [15]: link = "http://f8f44d1e.ngrok.io/static/covernote_receipt/xyz.xlsx"

In [16]: file_name, headers = urllib.urlretrieve(link)

In [17]: workbook = xlrd.open_workbook(file_name)

In [18]: sheet = workbook.sheet_by_index(0) # Get your sheet here

In [19]: sheet
Out[19]: <xlrd.sheet.Sheet at 0x10fd3e090>

In [21]: sheet.nrows # No. of rows
Out[21]: 3

In [22]: sheet.ncols # No. of columns
Out[22]: 1

In [23]:

这是我的xlsx内容,

enter image description here

答案 1 :(得分:0)

file_url = 'http://127.0.0.1:8000/media/temp/aggregate_bill_export_20180427055420580970.xlsx'
meta = urllib.urlopen(file_url)

xlsx=meta.read()

wb = load_workbook(StringIO.StringIO(xlsx))

sheet = wb.worksheets[0]

total_records = sheet.max_row

请查看并建议是否可以优化某些内容。

答案 2 :(得分:0)

CSV文件是一个文本文件,它只包含由换行符分隔的行。 Excel文件是使用专有Microsoft格式的二进制文件。对于CSV文件,“线”的概念是有意义的。这对于Excel文件来说是荒谬的。

如果要计算Excel文件中的行数,则必须使用可以解析此类文件的库。只在Excel文件的HTTP响应主体上使用.readlines()将无效。