OpenPyXL +如何在Excel中的单元格中搜索内容,如果内容与搜索条件匹配,则更新内容?

时间:2014-08-08 14:30:50

标签: python openpyxl

我正在使用Python(使用2.7)项目来搜索excel文件以查找正在更改的服务器的UNC路径,然后使用新的UNC路径更新单元。我是python的新手,我能够找到单元并打印出来:

def main():
    wb = load_workbook(filename = 'Book1_test.xlsx', use_iterators = True)
    ws = wb.get_sheet_by_name(name = 'Sheet1')

    for row in ws.iter_rows(): 
        for cell in row:
            print cell.value

但是,我不知道如何使用新字符串更新单元格,并且工作簿似乎处于只读模式;可能是因为ws只检索信息。
我在网上找到了很多资源来搜索单元格和打印信息,但没有找到如何在找到信息后更新单元格。有很多关于如何使用空白单元创建新工作簿的信息,然后更新您自己的信息;另外,关于如何打开现有工作表并将内容插入新单元格。我只是没找到我要找的东西,而我的技能还没有自己做。

以下是我的目标,如果有人可以提供帮助,我会非常感激:

  1. 打开工作簿
  2. 通过单元格迭代UNC路径;作为超链接。
  3. 编写新的UNC路径/公式
    注意:我只想更新引用服务器名称的链接的第一部分。例如, file:/// \\ enterprise \ ... 将是 file:/// \\ file-server \ ...
  4. 关闭工作簿
  5. 缺点我希望有人可以帮助我:

    • 我不了解循环语法,足以迭代非特定内容的单元格;这意味着我不知道如何在字符串中搜索单词。
    • 我应该担心捕捉细胞数量/坐标吗?
    • 如果通过迭代单元格,将内容存储到变量,解析字符串并仅提取我正在寻找的内容(服务器名称)来连接此问题,则在新服务器名称之前和之后连接其他信息,并且然后更新单元格内容?

1 个答案:

答案 0 :(得分:3)

.value对象的Cell属性是可设置的。这意味着您可以随时执行以下操作:

cell.value = 'Helloooo ladies'

如果这不起作用,可能是因为优化器读取模式。如果需要,请检查优化的写入模式...我总是发现openpyxl的文档非常完整且易于理解。

如何在单元格中查找信息或识别您正在寻找的内容是一个非常开放的问题,可以通过千种方式解决:

  • 检查单元格的完整内容
  • 检查单元格中是否包含给定的子字符串
  • 与正则表达式匹配
  • ...

但这与openpyxl框架没有任何关系。