Используйте OpenPyXL для итерации по листам и ячейкам и обновления ячеек с континенацией строки

Я хотел бы использовать OpenPyXL для поиска по книге, но я сталкиваюсь с некоторыми проблемами, с которыми я надеюсь, кто-то может помочь.

Вот некоторые из препятствий / задач:

  • У меня есть неизвестное количество листов и ячеек
  • Я хочу выполнить поиск в книге и поместить имена листов в массив
  • Я хочу циклически перемещаться по каждому элементу массива и искать ячейки, содержащие определенную строку
  • У меня есть ячейки с UNC-путями, которые ссылаются на старый сервер. Мне нужно извлечь весь текст после имени сервера в UNC-пути, обновить имя сервера и связать оставшийся текст с именем сервера
    например \ file-server \ blah \ blah \ blah.xlsx; extract \ file-server \; замените на \ file-server1 \; положить оставшееся blah \ blah \ blah.xlsx после нового имени.
  • Сохранить документ xlsx

Я новичок в Python, так кто-то сможет указать мне в правильном направлении? Образец кода приветствуется, потому что все, что я знаю, как сделать в этот момент, – это поиск известной книги с известными именами листов, а затем печать данных. Я не знаю, как включать подстановочные знаки при итерации через рабочие листы и ячейки.

Что я сделал, чтобы показать содержимое ячеек:

from openpyxl import load_workbook, worksheet def main(): #read workbook to get data wb = load_workbook(filename = 'Book1_test.xlsx', use_iterators = True) ws = wb.get_sheet_by_name(name = 'Sheet1') #ws = wb.worksheets #Iterate through worksheet and print cell contents for row in ws.iter_rows(): for cell in row: print cell.value #Iterate through workbook & print worksheets #for sheet in wb.worksheets: # print sheet if __name__ == '__main__': main() 

———————–Обновить————————-

Я могу искать через ячейки и извлекать имя сервера из ячейки, но я не могу сохранить таблицу, потому что я в режиме только для чтения. Когда я пытаюсь переключиться на optimized_write = True, я получаю ошибку:

AttributeError: объект 'ReadOnlyCell' не имеет атрибута 'upper'

Вот мой код:

 from openpyxl import load_workbook, worksheet, Workbook def main(): #read workbook to get data wb = load_workbook(filename = 'Book1_test.xlsx', use_iterators = True) ws = wb.get_sheet_by_name(name = 'Sheet1') #ws = wb.worksheets #Iterate through worksheet and print cell contents for row in ws.iter_rows(): for cell in row: cellContent = str(cell.value) #Scans the first 14 characters of the string for the server name if cellContent[:14] == '\\\\file-server\\': #open workbook in write mode? wb = Workbook(optimized_write=True) ws = wb.create_sheet() #update cell content ws[cell] = '\\\\file-server1\\' + cellContent[14:] print cellContent[:14] #save workbooks wb.save('Book1_test.xlsx') if __name__ == '__main__': main() 

Кто-нибудь знает, как обновлять содержимое ячеек?

4 Solutions collect form web for “Используйте OpenPyXL для итерации по листам и ячейкам и обновления ячеек с континенацией строки”

Я не думаю, что вы можете обновить содержимое ячейки. Вы можете открыть файл для чтения или открыть новый файл для записи. Я думаю, вам нужно создать новую книгу, и каждую ячейку, которую вы читаете, если вы решите не изменять ее, напишите ее в свою новую книгу. В вашем примере кода вы переписываете wb (используется для чтения) с помощью wb (используется для записи). Вытяните его из цикла for, назначьте ему другое имя.

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

 workBook = load_workbook('example.xlsx') sheet = workBook.get_sheet_by_name('sheet') a = sheet.cell(row=i,column=j) a.value = 'nuevo valor' 

а затем сохраните:

 workBook.save('example.xlsx') 

Почему вы не читаете документацию? Если вы просто открываете книгу без флажков, вы можете ее редактировать.

Это дубликат OpenPyXL + Как я могу искать контент в ячейке в Excel, и если контент соответствует критериям поиска, обновите контент?

по строкам что-то вроде этого (как идея) работает:

 sheet = wb.create_sheet(index = 1, title = 'Hipster') # name of the obj. sheet for counter in range(1,11): sheet['A'+ str(counter)] = 'Hola' 
Interesting Posts

Как установить пакет SimpleJson для Python

Запустить скрипт python в IPython с встроенными / встроенными графиками

import vs __import __ () vs importlib.import_module ()?

Вставить в удаленный сервер Couchbase Python

получить ошибки при импорте lxml.etree в python

Фильтрация выборочных опросов в учебнике Django вызывает опросы в индексе для дублирования

TypeError: аргумент типа «NoneType» не повторяется в python

Почему значения словаря переопределяются в конце этого цикла?

добавляется одна дополнительная строка, когда я открываю CSV-файл в окне. Это наблюдается только тогда, когда я отправляю CSV-файл в качестве вложения в электронную почту

Как перенести строки в столбец только по 7 строк за раз в файле

Как получить прозрачный фон в окне с PyGTK и PyCairo?

Как использовать (случайный) шрифт * .otf или * .ttf в matplotlib?

Как эффективно хранить этот проанализированный XML-документ в базе данных MySQL с помощью Python?

Обратные строки в Django Admin

Почему неявно проверять пустоту в Python?

Python - лучший язык программирования в мире.