使用OpenPyXL遍历表单元和单元格,并用连续string更新单元格

我想使用OpenPyXL来search工作簿,但是我遇到了一些我希望有人可以帮忙的问题。

这里有几个障碍/待办事项:

  • 我有一个未知数量的表格和单元格
  • 我想要search工作簿并将工作表名称放入数组中
  • 我想遍历每个数组项并search包含特定string的单元格
  • 我有UNCpath引用旧服务器的单元格。 我需要提取UNCpath中的服务器名称后面的所有文本,更新服务器名称,并将剩余的文本污染回服务器名称
    例如\ file-server \ blah \ blah \ blah.xlsx; 提取\文件服务器\; 用\ file-server1 \replace; 把新的名字后面留下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() 

———————–更新————————-

我能够search单元格,并从单元格中提取服务器名称,但我无法保存电子表格,因为我处于只读模式。 当我尝试切换到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() 

有谁知道如何更新单元格内容?

我不认为你可以更新单元格内容。 您可以打开要读取的文件,或者打开要写入的新文件。 我认为您必须创build一个新的工作簿,并且您阅读的每个单元格,如果您select不修改它,请将其写入新的工作簿。 在您的示例代码中,您正在用wb(用于写)覆盖wb(用于读取)。 把它拉出for循环,给它分配一个不同的名字。

为什么不阅读文档? 如果只需打开没有标志的工作簿,则可以对其进行编辑。

这是OpenPyXL +的重复如何在Excel中search单元格中的内容,并且如果内容符合search条件更新内容?

您可以更新单元格中的内容。 您需要分配一个值:

 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') 

按行这样(作为一个想法)的作品:

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