Как скопировать данные с одного листа на другой, пропуская пустые ячейки - Python и Openpyxl - PullRequest
0 голосов
/ 06 января 2020

Я использую python для форматирования электронной таблицы Excel. Мне нужно скопировать данные из столбца L на листе № 1 «Основные» и вставить их в столбец А на листе № 2 «Данные». Я получил эту работу, но я также хочу пропустить пустые ячейки, которые случайно появляются на Листе № 1, и здесь я столкнулся с проблемой.

Я пытался:

for i in range(2, 50):
    for j in range(12, 13):
        if cell.value != None:
            data.cell(row=i, column=j-11).value = main.cell(row=i, column=j).value

Однако я получаю сообщение об ошибке "NameError: имя 'значение' не определено"

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 06 января 2020

Это код, с которым мы работали (см. Комментарии для обратной и обратной связи):

import os
import openpyxl

wb = openpyxl.load_workbook('/Users/path/.xlsx')
main = wb['Sheet1']
wb.create_sheet(title='Formatted Data')
data = wb['Formatted Data']

for i in range(2, 50):
    for j in range(12, 13):
        if main.cell(i,j).value != None:
            data.cell(data.max_row+1, column=j-11).value = main.cell(row=i, column=j).value
0 голосов
/ 06 января 2020

По возможности, вам следует избегать использования собственных счетчиков и позволить openpyxl сделать всю работу за вас. Для нового листа это довольно просто.

empty_row = [None] * 11
for row in main.iter_rows(min_col=12, max_col=2, min_row=2, values_only=True):
    if row[0] != None:
         data.append(empty_row + row]
...