Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python:在xlrd中获取活动工作表?以及用于在Python中读取和验证excel文件的帮助_Python_Xlrd_Openpyxl_Xlwt_Xlutils - Fatal编程技术网

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

python:在xlrd中获取活动工作表?以及用于在Python中读取和验证excel文件的帮助,python,xlrd,openpyxl,xlwt,xlutils,Python,Xlrd,Openpyxl,Xlwt,Xlutils,要问的两个问题: 问题1: 我刚开始学习如何用python阅读excel文件。 我想知道在xlsrd->中是否有类似于获取活动工作表的方法或任何其他获取活动工作表的方法 get_active_工作表在openpyxl中起作用 输出:工作表1 我在xlrd中找到了检索工作表名称的方法,但没有一个能告诉我活动工作表的名称 问题2: xlrd是python中读取excel文件的最佳软件包吗?我还发现了一些关于其他python包xlsxwriterxlwtxlutils的信息,用于读取和写入excel文

要问的两个问题:

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

get_active_工作表在openpyxl中起作用

输出:工作表1

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

问题2:

xlrd是python中读取excel文件的最佳软件包吗?我还发现了一些关于其他python包xlsxwriterxlwtxlutils的信息,用于读取和写入excel文件

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


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

您可以使用“工作表名称”功能查看给定工作簿中的所有工作表。Excel没有活动工作表的概念,但如果我假设您引用的是第一张工作表是正确的,则可以获取工作表名称的第一个元素以获取活动工作表

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


我建议您坚持使用它。

您可以通过“工作表名称”功能查看给定工作簿中的所有工作表。Excel没有活动工作表的概念,但如果我假设您引用的是第一张工作表是正确的,则可以获取工作表名称的第一个元素以获取活动工作表

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

我建议坚持使用它。

欢迎使用堆栈溢出

我在Python中使用Excel文件已经有一段时间了,所以我想我可以帮助您解决您的问题

openpyxl和xlrd解决了不同的问题,一个用于xlsx文件Excel 2007+,另一个分别用于xls文件Excel 1997-2003

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

但是,xlrd不支持此类工作流,即请求活动工作表。如果您知道工作表名称,则可以使用方法sheet\u by\u name,或者如果您知道工作表索引,则可以使用方法sheet\u by\u index

我不知道xlrd是否是最好的软件包,但它非常可靠,我在使用它时没有遇到任何问题

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

我希望这个答案适合你的需要

小结:坚持使用xlrd,因为它已经足够成熟。

欢迎使用堆栈溢出

我在Python中使用Excel文件已经有一段时间了,所以我想我可以帮助您解决您的问题

openpyxl和xlrd解决了不同的问题,一个用于xlsx文件Excel 2007+,另一个分别用于xls文件Excel 1997-2003

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

但是,xlrd不支持此类工作流,即请求活动工作表。如果您知道工作表名称,则可以使用方法sheet\u by\u name,或者如果您知道工作表索引,则可以使用方法sheet\u by\u index

我不知道xlrd是否是最好的软件包,但它非常可靠,我在使用它时没有遇到任何问题

给出的示例可以通过首先迭代第一行并保留一个字典来解决,该字典的标题是哪个列。然后将ID列中的所有值存储在列表中,并将该列表的长度与从该列表创建的集合的长度进行比较,即lenvalues==lensetvalues。接下来,您可以遍历标题为Country和ch的列 如果每个值都在您以前使用所有有效县创建的字典中,请选中该值

我希望这个答案适合你的需要


小结:坚持使用xlrd,因为它已经足够成熟。

这里的活动工作表似乎是指保存/关闭工作簿时选择的最后一张工作表。您可以通过sheet_visible value获取此图纸

通常一次只选择一张图纸,因此它可能看起来像“图纸”可见,而“所选图纸”相同,但可以同时选择多张图纸,例如,按住ctrl键并单击多个图纸选项卡


另一个让人困惑的原因是Excel使用的是可见的隐藏/可见工作表。在xlrd中,这是工作表。可见性请参见

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

通常一次只选择一张图纸,因此它可能看起来像“图纸”可见,而“所选图纸”相同,但可以同时选择多张图纸,例如,按住ctrl键并单击多个图纸选项卡



另一个让人困惑的原因是Excel使用的是可见的隐藏/可见工作表。在xlrd中,这是工作表。可见性请参见

谢谢您的回答,excel中的活动工作表我指的是在打开excel文件时作为默认工作表打开的工作表。Excel中有一个活动工作表的概念。这是错误的,请参阅我的答案-OP所需的功能在xlrd中已存在10年以上years@NikTOP想要的功能是什么?你能解释一下吗?谢谢你的回答,我说的excel中的活动工作表是指当我们打开excel文件时作为默认工作表打开的工作表。Excel中有一个活动工作表的概念。这是错误的,请参阅我的答案-OP所需的功能在xlrd中已存在10年以上years@NikTOP想要的功能是什么?你能解释一下吗?这是不正确的,请看我的答案-OP所需的功能在xlrd中已经存在超过10年了。实际上,我怀疑你提到的版本范围。我用Excel2007创建了一些excel文件,openpyxl无法读取许多单元格值,并给出了非类型值。我试过使用xlrd,它读起来很流畅我不确定我是否可以问一个新问题,因为有太多关于这一点的问题,因为即使在更高版本的Excel中,xlrd仍然工作得更好我甚至用Excel 2016保存了文件,但没有任何更改这是不正确的,请参阅我的答案-OP所需的功能在xlrd中已存在超过10年。实际上,我怀疑您提到的版本范围。我用Excel2007创建了一些excel文件,openpyxl无法读取许多单元格值,并给出了非类型值。我试过使用xlrd,它读起来很流畅我不确定是否可以问一个新问题,因为有太多关于这方面的问题,因为即使在更高版本的Excel中,尽管如此,xlrd仍能更好地工作。我甚至用Excel 2016保存了文件,但在使用您提到的方式获取活动工作表后,仍然无法更改以获取活动单元格?@Eswar不确定,但我不这么认为。即使您可以,我认为有效的用例也非常少甚至没有。如果你真的需要,你可以使用像win32com这样的东西来打开Excel并以这种方式与之交互。不管怎样,在使用你提到的方式获取活动工作表之后,是否可以获取活动单元格?@Eswar不确定,但我不这么认为。即使您可以,我认为有效的用例也非常少甚至没有。如果您确实需要,可以使用win32com之类的工具打开Excel并以这种方式与之交互。 import openpyxl wb = openpyxl.load_workbook('example.xlsx') active_sheet = wb.get_active_sheet()
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)