Как пропустить одну или несколько ячеек при вставке содержимого в Excel с помощью Openpyxl? - PullRequest
0 голосов
/ 30 июня 2018

Я пытаюсь вставить текст в столбец существующего Excel. Однако мне нужно пропустить все выделенные ячейки. Например:

content.txt
1
2
3
4
5

workbook.xlsx должно выглядеть как
enter image description here

Ниже приведены коды, которые у меня есть:

import os, openpyxl
f = open("content.txt", mode="r+")
wb = openpyxl.load_workbook(filename = 'workbook.xlsx')
worksheet = wb.active

r = 1
for line in f.readlines():
    if worksheet.cell(row=r, column=9).fill.bgColor.value != '00000000':
        r+=1
        worksheet.cell(row=r, column=1).value = line
        r+=1
        continue
    else:
        worksheet.cell(row=r, column=1).value = line
        r += 1
f.close()

Но он пропускает только одну выделенную строку ... Хотя я все еще пытаюсь понять это.

Или, если я напишу такой код:

import os, openpyxl
f = open("content.txt", mode="r+")
wb = openpyxl.load_workbook(filename = 'workbook.xlsx')
worksheet = wb.active

r = 1
for line in f.readlines():
    if worksheet.cell(row=r, column=9).fill.bgColor.value != '00000000':
       r+=1
       continue
    else:
        worksheet.cell(row=r, column=1).value = line
    r += 1
f.close()

Результатом будет: enter image description here (TXT line также пропускаются ...)

Дайте мне знать, если у вас есть идеи. Должен ли я использовать цикл while ...? Спасибо !!

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

ОК, я получил ответ с помощью @Ash Sharma!

Этот код работает для меня:

import os, openpyxl
f = open("content.txt", mode="r+")
wb = openpyxl.load_workbook(filename = 'workbook.xlsx')
worksheet = wb.active

r = 1
for line in f.readlines():
    if worksheet.cell(row=r, column=1).fill.bgColor.value != '00000000':
    # '00000000' corresponds to no fill
       r+=1
       worksheet.cell(row=r, column=1).value = line
       r+=1
       continue
    else:
        worksheet.cell(row=r, column=1).value = line
        r += 1

f.close()

wb.save('test_Result.xlsx')
0 голосов
/ 30 июня 2018

Добавить оператор if внутри цикла for

r = 1
for line in f.readlines():
    if worksheet.cell(row=r, column=1).fill.bgColor.value != '00000000':
    # '00000000' corresponds to no fill
       continue
    worksheet.cell(row=r, column=1).value = line
    r += 1
f.close()

Также в коде, который вы разместили здесь, отсутствует отступ для r+=1.

...