1

尽管有各种 Python Excel 操作库和资源,但我无法找到具体的解决方案。

现在,我有一个模板 Excel 文件,其中存在一个表格。我想编写一个 Python 程序来填充这个表。任何现有的 Excel 库都可以做到这一点吗?模板 Excel 文件有一个带有空表的工作表(第一个屏幕截图)。我想用来自其他地方的一些数据以编程方式填充表。例如

初始 Excel 空表

data = [("TS0001", "1.0 Administration", "Root", "vdouk", "15/09/19", 8.0, "example 1"),
        ("TS0002", "1.0 Administration", "Root", "vdouk", "16/09/19", 3.0, "example 2"),
        ("TS0003", "4.0 Simulations", "Root", "vdouk", "16/09/19", 5.0, "example 3")]

因此,我希望最终看起来像第二张截图。总条目和小计是根据适当的 Excel 单元格函数(已定义)自动计算的。最后,请注意,此表是从工作簿的其他部分引用的,这意味着它是一个命名数据源(在 Excel 名称管理器中可见),因此定义一个新表会导致其他地方出现问题。有人可以指导我找到最合适的解决方案吗?

决赛桌示例

这是工作逻辑。

  1. 打开现有的 Excel 文件。
  2. 不要更改任何格式。
  3. 不要删除任何现有数据。
  4. 用新行更新 excel 文件:
    1. 在标题行下方插入所有新行。
    2. 确保这将新行作为现有表的一部分。
  5. 保存并关闭excel文件。

更新

现在,我正在使用 openpyxl。我所做的解决方法是编辑模板 .xlsx 并将空行添加到表中。然后我使用 openpyxl 写入与我的数据元组一样多的行。表格总计似乎有效,但是其他一些 excel 宏似乎正在破坏。

4

3 回答 3

1

您不能使用任何现有的 Python 模块更新 excel 文件,但您可以使用 Openpyxl 模块覆盖现有文件。

在 Openpyxl 模块的帮助下,您可以读取内存中的现有工作表,添加新内容并将其保存回同一文件。eg from openpyxl import load_workbook #Open an x​​lsx wb = load_workbook(filename = 'data.xlsx') #获取当前的Active Sheet ws = wb.get_active_sheet() #ws = wb.get_sheet_by_name("Sheet1") #获取行和您要写入的列索引 ws.cell(1,1).value = 'your_value' # save() 将覆盖现有文件 wb.save('data.xlsx')

于 2019-09-17T06:31:51.660 回答
0

也许您可以为此使用xltpl - 一个从 xls/x 模板生成 xls/x 文件的 python 模块。

使用您的 excel 文件作为模板来生成一个新文件。

于 2020-05-12T07:26:27.300 回答
-1

您可以使用 Python 模块 xlsxwriter。例如

import xlsxwriter
workbook =xlsxwriter.Workbook('xD.xlsx')
worksheet = workbook.add_worksheet()
worksheet.write(row, col,     'First Name')
workbook.close()
于 2019-09-16T09:03:37.277 回答