Самый чистый способ получить ряд значений из openpyxl? - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть код, который ранее обрабатывал файлы .csv с помощью модуля python csv .Поскольку нашим исходным материалом на самом деле является Excel, было бы намного проще, если бы мы могли работать непосредственно с файлами .xlsx, поэтому я нашел openpyxl и начал с этим играть - похоже, что он должен делать то, что мынеобходимость.

Ранее у нас был простой / стандартный блок кода, который использовал csv.reader и islice, чтобы захватывать по одной строке за раз и присваивать кучу значений для каждой строки:

with open(csvfile) as f:       
    reader = csv.reader(f, dialect='excel')
    for row in islice(reader, 28,29):
        [ifile, in_time, dur, day, sess, flight, dive] = row

Функция csv.reader возвращает каждую строку в виде списка строк, чего и ожидает остальная часть программы (в данном случае) моей локальной переменной строки.Однако Openpyxl, похоже, хочет вернуть генератор (что имеет смысл): я могу просто взять этот генератор, привести все значения к строкам, добавить эти строки во временный список, а затем назначить все исходные переменные элементам вэтот временный список.Но мне кажется, что должен быть более элегантный способ - я довольно новичок во всем этом питонском концерте, но всегда есть гораздо более чистый способ делать такие вещи, как этот.

wb = openpyxl.load_workbook('tunnel.xlsx')
sheet = wb.active
for row in sheet.iter_rows(min_row=2, min_col=1, max_row=4, max_col=7):
    # build a temporary list to store the actual cell values
    my_cell_values = []
    for cell in row:
        my_cell_values.append(str(cell.value))
    [ifile, in_time, dur, day, sess, flight, dive] = my_cell_values

Предложения приветствуются здесь.Это работает просто отлично, но мне это не совсем "смотрится"

...