【问题标题】:Iterate through sheets in Pyexcel in python在 python 中遍历 Pyexcel 中的工作表
【发布时间】:2017-07-11 20:57:11
【问题描述】:

我想遍历 Excel 的所有非空工作表以获取标题。我必须为此使用 PyExcel。这是我的代码:

import pyexcel as pe
book = pe.get_book(file_name="Mydata.xlsx")




j=0
print(j)
for j in range(100):
    for item in book.sheet_by_index(j):

     sheet = pe.get_sheet(file_name="Mydata.xlsx")
     sheetheaders= sheet.row_at(0)
     header_list = [i for i in sheetheaders if i != '' ]

     print(header_list)
     j=j+1

谁能帮助我告诉我如何迭代它而不会出现以下错误?

Traceback (most recent call last):
   line 11, in <module>
    for sheet in book[i]:
TypeError: 'NoneType' object is not iterable

谢谢!

【问题讨论】:

  • 工作表的索引很可能是从零开始的。尝试将i 设置为 0。
  • 用 i=0 初始化 i
  • 它在抱怨sheeheadersNone。你确定你没有拼错shee*t*headers吗?这个变量在哪里定义?你的意思是header_list = [header for header in sheet]
  • book[i] 在哪里?您可以一次粘贴整个代码吗?
  • 嗨,我更新了代码。它不会出现在第二张纸上。它在第一张表中迭代并一次又一次地给出这些标题。

标签: python excel pyexcel


【解决方案1】:

请试试这个:

import pyexcel as p

header_list = [[ a_header for a_header in sheet.row[0] if a_header] for sheet in p.get_book(file_name="my file.xlsx") if sheet.number_of_rows() > 0]

【讨论】:

  • 嗨,非常感谢!这个包让我的生活更轻松!
  • 我很高兴听到这个消息。这是我的荣幸!
  • 您好,它有效,但我在输出列表中将 ' ' 作为一个项目。我尝试使用>>>>>>>> '~[a for a in header_list if len(a) > 0]~' 但它没有用。例子:::::::: char=[a,v,b,' ', ' ']
【解决方案2】:

您不需要在 for 循环中手动增加索引。试试下面的代码:

for sheet_index in range(book.number_of_sheets()):
    sheet = book.sheet_by_index(sheet_index)
    header_list = [header for header in sheet.row_at(0)]

    print(header_list)

【讨论】:

    猜你喜欢
    • 2020-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多