2

2个问题要问:

问题 1: 我刚开始研究xlrd以在 python 中读取 excel 文件。get_active_sheet()我想知道 xlsrd ->中是否有类似于openpyxl或任何其他方式来获取活动表的方法?

get_active_sheet()工作在这个openpyxl

导入openpyxl

wb = openpyxl.load_workbook('example.xlsx')

active_sheet = wb.get_active_sheet()


输出:工作表“Sheet1”

我找到xlrd了检索工作表名称的方法,但没有一个能告诉我活动工作表。

问题 2:

xlrdpython中读取excel文件的最佳软件包是什么?我还遇到了这个,它有关于其他 python 包(xlsxwriterxlwtxlutils)的信息,用于读取和写入 excel 文件。

以上哪一项最适合制作读取 Excel 文件并将不同验证应用于不同列的应用程序

例如:标题为“ID”的列应具有唯一值,标题为“国家/地区”的列应具有有效的国家/地区。

4

3 回答 3

3

此处的“活动工作表”似乎指的是保存/关闭工作簿时选择的最后一张工作表。您可以通过sheet_visiblevalue 获取此表。

https://github.com/python-excel/xlrd/blob/master/xlrd/sheet.py#L33

import xlrd
xl = xlrd.open_workbook("example.xls")
for sht in xl.sheets():
    # sht.sheet_visible value of 1 is "active sheet"
    print(sht.name, sht.sheet_selected, sht.sheet_visible)

通常一次只选择一个工作表,所以它可能看起来sheet_visiblesheet_selected相同,但一次可以选择多个工作表(例如,ctrl+单击多个工作表选项卡)。

这可能看起来令人困惑的另一个原因是因为 Excel 在隐藏/可见工作表方面使用“可见”。在 xlrd 中,这是 sheet.visibility (请参阅https://stackoverflow.com/a/44583134/4258124

于 2017-11-29T17:49:58.563 回答
2

欢迎来到Stack Overflow

我一直在处理Excel文件Python一段时间,所以我想我可以帮助你解决你的问题。

openpyxlxlrd解决不同的问题,一个是xlsx文件(Excel 2007+),另一个是xls文件(Excel 1997-2003)。

Xenon在他的回答Excel中说不承认工作active表的概念,这并不完全正确。如果您打开一个Excel文档,转到另一个工作表(不是第一个工作表)并保存并关闭该文档,下次打开它时,Excel将在您所在的最后一个工作表上打开该文档。

但是,xlrd不支持这种工作流程,即索要工作active表。如果您知道工作表名称,则可以使用 method sheet_by_name,或者如果您知道工作表索引,则可以使用 method sheet_by_index

我不知道这是否xlrd是最好的软件包,但它非常可靠,而且我使用它没有任何问题。

给出的示例可以通过首先遍历第一行并保留标题所在列的字典来解决。然后将 ID 列中的所有值存储在一个列表中,并将该列表的长度与从该列表创建的集合的长度进行比较,即len(values) == len(set(values))。之后,您可以遍历带有 Country 标题的列,并检查每个值是否在您之前使用所有有效县制作的字典中。

我希望这个答案适合您的需求。

总结:坚持是xlrd因为足够成熟。

于 2016-08-26T08:21:43.890 回答
1

您可以使用该功能查看给定工作簿中的所有工作表sheet_names()。Excel 没有“活动工作表”的概念,但如果我假设您指的是第一个工作表是正确的,您可以获得的第一个元素sheet_names()来获得“活动工作表”。

关于你的第二个问题,客观地说一个包优于另一个包并不容易。但是,xlrd它被广泛使用,并且是最流行的 Python 库。

我会建议坚持下去。

于 2016-04-21T07:34:31.573 回答