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文件。 谢谢!
答案 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
内容,
答案 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()
将无效。