python:在xlrd中获取活动表?以及帮助阅读和验证Python中的excel文件



2要问的问题:

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

get_active_sheet()openpyxl 中执行此操作

导入openpyxlwb=openpyxl.load_workbook('example.xlsx')active_sheet=wb.get_active_sheet()

输出:工作表"Sheet1"

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

问题2:

xlrd是python中读取excel文件的最佳包吗?我还发现了这篇文章,其中包含了其他用于读取和写入excel文件的python包(xlsxwriter xlwt xlutils)的信息。

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

例如:标题为"ID"的列应具有唯一值,标题为"Country"的列应有有效的Country。

;活性片";您所指的似乎是保存/关闭工作簿时选择的最后一张工作表。您可以通过sheet_visible值获取此工作表。

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)

欢迎使用Stack Overflow

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

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

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

但是,xlrd不支持这种工作流程,即请求active表单。如果知道图纸名称,则可以使用方法sheet_by_name;如果知道图纸索引,则可以采用方法sheet_by_index

我不知道xlrd是否是最好的包装,但它非常坚固,我使用它没有任何问题。

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

我希望这个答案能满足你的需要。

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

您可以使用sheet_names()函数查看给定工作簿中的所有工作表。Excel没有"活动工作表"的概念,但如果我认为你指的是第一张工作表的假设是正确的,你可以获得sheet_names()的第一个元素来获得"活动工作单"

关于你的第二个问题,客观地说一个包裹比另一个包裹好并不容易。然而,xlrd被广泛使用,并且是最流行的Python库的作用。

我建议坚持下去。

最新更新