【问题标题】:openpyxl loaded workbooks are emptyopenpyxl 加载的工作簿是空的
【发布时间】:2018-05-10 23:40:25
【问题描述】:

当我使用 openpyxl 创建自己的工作簿时,我能够保存活动工作表,创建新工作表,然后打印出工作簿中所有工作表的列表。当我加载预先存在的工作簿时,load_workbook 似乎可以正常执行,但是当我尝试打印文件中的工作表列表或访问活动工作表时,加载的工作簿似乎是空的。工作簿中的工作表列表打印为空列表,保存活动工作表会生成 None 类型的对象。我的代码:

from openpyxl import Workbook
from openpyxl import load_workbook

existing_book = load_workbook('existing_book.xlsx')
print(existing_book.sheetnames)

此工作簿不为空。它有几张纸。然而,这会打印一个空列表。

[]

此时:

new_workbook = Workbook()
dest_name = "New_Workbook.xlsx"
main_sheet = new_workbook.active
main_sheet.title = "Main"
second_sheet = new_workbook.create_sheet("Sheet_2")
print(new_workbook.sheetnames)

打印预期的工作表列表。为什么我加载的工作簿......是空的? 此外,如果我尝试保存我加载的工作簿之一,我会收到错误消息:

IndexError: At least one sheet must be visible

:-(

【问题讨论】:

  • 无法重现空列表症状,我的相同代码打印工作表列表:[u'Sheet1', u'Sheet2'] 等。这是一个现场演示:repl.it/repls/WavyAccurateProfessional
  • 这会发生在 any 现有的 xlsx 上吗?还是只针对这个特定的 existing_book.xlsx
  • 好的——似乎只有当文件最初不是 xlsx 文件,而是在 excel 中保存为一个文件时才会发生这种情况。具体问题在于 csv 文件。我可以直觉地认为那里可能存在问题,但不确定是否修复
  • OK-- 通过文本导入将 csv 文件导入 excel 而不是简单地将打开的 csv 文件保存为 xlsx,从而解决了这个问题。
  • 您可能遇到了我刚刚遇到的同样问题。在这里快速记下:kenneho.net/2019/07/08/…

标签: python excel openpyxl


【解决方案1】:

你必须 ## workbook.create_sheet(str) ##

【讨论】:

  • El Chilango,感谢您的回答。在您的回答中提供一些上下文来说明为什么需要此命令以及它在 OP 代码中的位置也可能会有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多