【问题标题】:OpenPyXL + How can I search for content in a cell in Excel, and if the content matches the search criteria update the content?OpenPyXL + 如何在 Excel 的单元格中搜索内容,如果内容符合搜索条件,则更新内容?
【发布时间】:2014-08-08 14:30:49
【问题描述】:

我正在开发一个 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. 关闭工作簿

我希望有人可以帮助我的缺点:

  • 我对 for 循环语法的理解不足以遍历单元格以获取非特定内容;意思是我不知道如何在字符串中搜索一个单词。
  • 我应该担心捕获单元格编号/坐标吗?
  • 是否应该通过迭代单元格、将内容存储到变量、解析字符串并仅提取我要查找的内容(服务器名称)、连接新服务器名称前后的其他信息来解决此问题,然后更新单元格内容?

【问题讨论】:

    标签: python openpyxl


    【解决方案1】:

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

    cell.value = 'Helloooo ladies'
    

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

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

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

    但这与openpyxl框架无关。

    【讨论】:

    • 是的,发帖者使用的是只读模式use_iterators=True。如果您想编辑 Excel 文件,请不要使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-24
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    • 2021-06-07
    相关资源
    最近更新 更多