【发布时间】: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/…