Используйте 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() 

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

  • не может импортировать рабочую книгу в openpyxl
  • Получить цвет ячеек из .xlsx
  • Как создать гиперссылку на другой лист Excel в той же книге
  • библиотека openpyxl - ошибка jdcal
  • openxxl конвертировать CSV в EXCEL
  • Python: запись в файлы Excel 2007+ (файлы .xlsx)
  • для _name в узле: TypeError: объект «NoneType» не является итерируемым
  • Как писать в существующий файл excel без нарушения формул с помощью openpyxl?
  • 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' 
    Python - лучший язык программирования в мире.