如何使用Python以编程方式将行添加到现有Excel表中

如何使用Python以编程方式将行添加到现有Excel表中,python,excel,excel-tables,Python,Excel,Excel Tables,尽管有各种Python-Excel操作库和资源,但我无法找到具体的解决方案 现在,我有一个Excel模板文件,其中有一个表。我想写一个Python程序来填充这个表。对于任何现有的Excel库,都可以这样做吗?模板Excel文件有一个带有空表的工作表第一个屏幕截图。我想用其他地方的一些数据以编程方式填充该表。e、 g 因此,我希望最后看起来像第二个截图。根据已定义的相应excel单元格函数自动计算总条目和小计。最后,请注意,此表是从工作簿的其他部分引用的,这意味着它是Excel名称管理器中显示的命

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

现在,我有一个Excel模板文件,其中有一个表。我想写一个Python程序来填充这个表。对于任何现有的Excel库,都可以这样做吗?模板Excel文件有一个带有空表的工作表第一个屏幕截图。我想用其他地方的一些数据以编程方式填充该表。e、 g

因此,我希望最后看起来像第二个截图。根据已定义的相应excel单元格函数自动计算总条目和小计。最后,请注意,此表是从工作簿的其他部分引用的,这意味着它是Excel名称管理器中显示的命名数据源,因此定义新表将在其他地方引起问题。 有人能告诉我最合适的解决方案吗

这是工作逻辑。 打开现有的excel文件。 不要更改任何格式。 不要删除任何现有数据。 使用新行更新excel文件: 在标题行下方插入所有新行。 确保这会将新行作为现有表的一部分。 保存并关闭excel文件。 使现代化
现在,我正在使用openpyxl。我所做的变通方法是编辑template.xlsx并向表中添加空行。然后,我使用openpyxl编写与数据元组一样多的行。表总计似乎正常工作,但其他一些excel宏似乎正在崩溃。

您可以使用Python模块xlsxwriter。 e、 g


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

在Openpyxl模块的帮助下,您可以读取内存中现有的工作表,添加新内容并将其保存回同一文件。 例如 从openpyxl导入加载工作簿 打开一个xlsx wb=load_workbookfilename='data.xlsx' 获取当前活动工作表 ws=wb.get\u活动\u工作表 ws=wb.get_sheet_by_nameSheet1 获取要写入的行和列索引 ws.cell1,1.value='your_value' 保存将覆盖现有文件 wb.save'data.xlsx'

也许您可以使用python模块从xls/x模板生成xls/x文件


使用excel文件作为模板生成新文件。

XlsxWriter不能处理现有文件,这是此处的要求之一。有多个python模块用于处理excel工作簿,但遗憾的是,没有一个模块支持更新现有工作簿。其中一个模块是Openpyxl,但它实际上覆盖了现有的模块。因此,您必须遵循以下步骤,1。使用xlrd模块读取内存2中的现有文件。读取文件并在内存3中创建数据结构。将其写入具有相同文件名的新excel文件并保存。或者使用Openpyxl模块保存方法覆盖文件。感谢您的建议@Sachin。但是,这里真正的问题不是保存位置或覆盖。文件保存在别处是可以接受的。问题在于如何编辑Excel文件,以便在不破坏任何内容的情况下保留和正确更新内部结构,更确切地说,是破坏其中的表。确保保留现有Excel工作簿所有功能逼真度的唯一方法是使用Excel本身打开它。您可以通过各种方式实现自动化。如果您想坚持使用Python作为脚本语言,那么我的建议是使用。我所做的变通方法是编辑template.xlsx并向表中添加10K空行。然后,我使用openpyxl编写与数据元组一样多的行。表格总计似乎正常工作,但其他一些excel宏似乎正在崩溃。我得再仔细研究一下。我还不如用翅膀。我想知道win32com接口是否能解决这个问题。如果您愿意直接使用win32com,这是一个非常好的选择。xlwings在Windows上运行时使用win32com本身。
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")]
import xlsxwriter
workbook =xlsxwriter.Workbook('xD.xlsx')
worksheet = workbook.add_worksheet()
worksheet.write(row, col,     'First Name')
workbook.close()