Dynamicaly Build Python списки из таблиц в книге Excel

Я пытаюсь сжать некоторый код, который я написал ранее в python. У меня есть какой-то вытянутый код, который проходит через несколько таблиц поиска в книге Excel. В рабочей книге содержится около 20 листов, содержащих таблицы поиска. Я хочу перебирать значения в каждой таблице поиска и добавлять их в свой список. Мой существующий код выглядит следующим образом:

test1TableList = [] for row in arcpy.SearchCursor(r"Z:\Excel\LOOKUP_TABLES.xlsx\LookupTable1$"): test1TableList.append(row.Code) test2TableList = [] for row in arcpy.SearchCursor(r"Z:\Excel\LOOKUP_TABLES.xlsx\LookupTable1$"): test2TableList.append(row.Code) test3TableList = [] for row in arcpy.SearchCursor(r"Z:\Excel\LOOKUP_TABLES.xlsx\LookupTable1$"): test3TableList.append(row.Code) test4TableList = [] for row in arcpy.SearchCursor(r"Z:\Excel\LOOKUP_TABLES.xlsx\LookupTable1$"): test4TableList.append(row.Code) test5TableList = [] for row in arcpy.SearchCursor(r"Z:\Excel\LOOKUP_TABLES.xlsx\LookupTable1$"): test5TableList.append(row.Code) 

yadda yadda

Я хочу сжать этот код (возможно, в функции).

Вопросы для решения:

  1. Имена листов все разные. Мне нужно прокрутить каждый лист в книге Excel, чтобы: a) захватить объект листа и b) использовать имя листа как часть имени переменной списка python
  2. Я хочу, чтобы каждый список оставался в памяти для дальнейшего использования кода

Я пытаюсь что-то вроде этого, которые работают, но переменные списка python, похоже, не остаются в памяти:

 import arcpy, openpyxl from openpyxl import load_workbook, Workbook wb = load_workbook(r"Z:\Excel\LOOKUP_TABLES.xlsx") for i in wb.worksheets: filepath = r"Z:\Excel\LOOKUP_TABLES.xlsx" + "\\" + i.title + "$" varList = [] with arcpy.da.SearchCursor(filepath, '*') as cursor: for row in cursor: varList.append(row[0]) # This is the area I am struggling with. I can't seem to find a way to return # each list into memory. I've tried the following code to dynamically create # variable names from the name of the sheet so that each list has it's own # variable. After the code has run, I'd just like to set a print statement # (ie print variablename1) which will return the list contained in the variable newList = str(i.title) + "List" newList2 = list(varList) print newList + " = " + str(newList2) 

Я работал над этим некоторое время, и я не сомневаюсь, на данный момент, я уже думал о своем решении, но я в блоке. Любые рекомендации приветствуются!

Не уверен, что это лучшее для вас, но вы можете использовать pandas для импорта ваших листов в dataframes.

 from pandas.io.excel import ExcelFile filename = 'linreg.xlsx' xl = ExcelFile(filename) for sheet in xl.sheet_names: df = xl.parse(sheet) print df 

Вместо списков размножения используйте словарь для сбора данных на листе:

 import arcpy from openpyxl import load_workbook wb = load_workbook(r"Z:\Excel\LOOKUP_TABLES.xlsx") sheets = {} for i in wb.worksheets: filepath = r"Z:\Excel\LOOKUP_TABLES.xlsx" + "\\" + i.title + "$" with arcpy.da.SearchCursor(filepath, '*') as cursor: sheets[i.title] = [row[0] for row in cursor] print sheets 
Interesting Posts

Возможно ли создать настройку Excel на уровне документа с помощью Office Addins?

Можете ли вы использовать диапазон объединения для определения массива?

EXCEL: SUM = Total, MINUS другая ячейка, если значение в третьей ячейке = "Конкретный текст"

VBA Validation Throw 1004 Application -Defined Error

Вложенные аргументы, возвращающие нуль, если ничего не введено в ячейку

Как передать цель в другой макрос в событиях Excel?

выбирать случайные имена из списка

Как автоматизировать поиск / замену кода в модулях VBA в MS Office 2013?

Проблема с написанием файла данных pandas для Excel

Условное форматирование Excel 2003 (изменение формата текста)

Excel VBA, пустой объект, возвращаемый функцией

Как использовать индекс, чтобы найти все значения, превышающие

Как форматировать числа, которые нужно сохранить в виде текста в excel?

Изменение значения ранга в формуле Excel

Удалить всю строку выбранного элемента в списке, VBA Excel

Давайте будем гением компьютера.