从python中的下一个电子表格中读取

时间:2017-06-28 12:48:49

标签: python csv

我正在读取python中的csv文件,我的第一个工作表已经填满了1048576行限制,我想从我的for循环中继续读取第二个工作表。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

您正在阅读csv文件或xls文件吗? csv文件甚至可以有单独的工作表吗?

总的来说,我建议使用openpyxl,这是一个很棒的库,用于阅读xls文件及其工作表。

import openpyxl
wb = openpyxl.load_workbook('yourfile.xlsx')
wb.get_sheet_names()

可以列出所有可用的工作表

sheet = wb.get_sheet_by_name('worksheet123')

允许加载所需的工作表以进行进一步处理

答案 1 :(得分:-1)

csv文件没有单独工作表的概念。它可以被认为是一个单一的工作表。作为文本文件,它也没有行限制。如果您尝试将其导入Excel,那么可能会达到限制,但这将限制Excel。

如果你的文件确实有多个工作表,那么它可能是一个xls文件。

要读入xlsx文件,您需要使用openpyxl等软件包。这使您可以读取所有工作表中的数据。

import openpyxl

data = []
wb = openpyxl.load_workbook('input.xlsx')

start_row = 1

for ws_name in wb.get_sheet_names():
    ws = wb.get_sheet_by_name(ws_name)

    for row in ws.iter_rows(min_row=start_row):
        data.append([col.value for col in row])

    start_row = 2       # skip the header in the other worksheets


# All data from all sheets has been loaded, display the data
for row in data:    
    print row

这将遍历工作簿中的每个工作表,并将所有行附加到单个data列表中。它假定每个工作表在顶部包含相同的标题行。考虑到这一点,它会保留第一个工作表中的标题表,但会跳过所有后续工作表。如果没有标题行,或者您希望在每个工作表中包含标题行,则只需将其更改为start_row = 1