首页 > 解决方案 > 将来自多个用户的 excel 编辑合并到一个主 excel 工作簿中

问题描述

我有一些 excel 文件,每个文件中有几个工作簿。所有列都已定义,我现在需要几个用户进入并添加数据。每个用户都将进行编辑并将添加了他们的信息的文档发回。然后有人会将所有更改复制并粘贴到主工作簿中。非常耗时的过程,我想知道是否可以使用 python 更快地完成此操作。我的想法是将主文件和编辑后的电子表格加载到数据框中,并在每个单元格中循环执行以下操作。

  1. 如果主单元格中的单元格为空白但在编辑的文件中有数据,则将该单元格中的信息复制到主单元格。
  2. 如果 master 中的单元格有数据但它与编辑的文件不同,则使用该信息覆盖 master 中的单元格。
  3. 如果主文件中的单元格具有与编辑文件完全相同的信息,则对该单元格不执行任何操作。
  4. 如果主文件和编辑文件中的单元格都是空白的,则对该单元格不执行任何操作。

这是一个可能的解决方案,还是我的逻辑偏离了,并且这样做更容易?这些 excel 文档很大,所以复制粘贴方法需要很长时间,我想为我的团队加快这个过程。所以基本上我想将每个用户的编辑添加到主控中,而不会在此过程中覆盖任何其他用户的编辑。提前感谢您对此的帮助。

标签: pythonexcelautomation

解决方案


这在 Python 中当然是可能的,但如果您正在为您的团队寻找持续的易用性,那么在 VBA 中将其构建为宏可能会更好。用户可以进入提交的文档,单击功能区上的一个按钮,它会通过一个相对漂亮的 UI 完成整个过程。虽然 Python 名义上可能更快,但您可能要求您的团队与终端界面交互(使用 Py2exe 或 pyinstaller),或者您可能需要在他们的工作站上安装 Python(例如,使用 xlwings)。

我不确定您的数据的确切布局,但这里有一个 VBA 流程如何工作的示例:

  1. 用户打开编辑的文件并单击功能区上的宏按钮
  2. 宏要求用户选择主文档(假设主文档并不总是相同)
  3. 基于序列/ID 列(通常是 A 列),在数据右侧插入一个辅助列,验证其输入的数据是否与主文档相同或不同(可以使用 CONCAT() 为比较他们是否正在编辑多个列)
  4. 对于不同的项目(将包括空白或更改的项目),将这些相应的范围复制到

有很多方法可以将逻辑分解为可执行代码,因此这只是一种可能性的示例。Python 是一种强大的语言,但对于自动执行 Excel 数据输入或此类请求的管理任务,VBA 通常是最简单的方法。


推荐阅读