按列名称和工作表名称获取列数据

Sil*_*ion 7 python excel xlrd

有没有办法使用python xlrd访问特定表中的列中的所有行.

例如:

workbook = xlrd.open_workbook('ESC data.xlsx', on_demand=True)
sheet = workbook.sheet['sheetname']
arrayofvalues = sheet['columnname']
Run Code Online (Sandbox Code Playgroud)

或者我必须自己创建一个字典?

excel非常大,所以我希望避免迭代所有的colnames/sheet

Joh*_*n Y 10

是的,您正在寻找col_values()工作表方法.代替

arrayofvalues = sheet['columnname']
Run Code Online (Sandbox Code Playgroud)

你需要做的

arrayofvalues = sheet.col_values(columnindex)
Run Code Online (Sandbox Code Playgroud)

columnindex列的编号在哪里(从零开始计数,因此列A是索引0,列B是索引1,等等).如果第一行(或前几行)中有描述性标题,则可以给出第二个参数,该参数指示从哪一行开始(再次从零开始计数).例如,如果您有一个标题行,因此希望从第二行开始的值,您可以这样做

arrayofvalues = sheet.col_values(columnindex, 1)
Run Code Online (Sandbox Code Playgroud)

请查看教程,以获得对xlrd包的合理可读的讨论.(官方xlrd文档更难阅读.)

还要注意(1)当你可以自由使用这个名字的时候arrayofvalues,你真正得到的是一个Python列表,它在技术上不是一个数组,并且(2)on_demand工作簿参数在使用.xlsx文件时没有效果,这意味着xlrd无论如何都会尝试将整个工作簿加载到内存中.(该on_demand功能适用于.xls文件.)