Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel Python修改现有.xlsx文件的数据_Excel_Python 2.7_Pandas_Openpyxl_Xlutils - Fatal编程技术网

Excel Python修改现有.xlsx文件的数据

Excel Python修改现有.xlsx文件的数据,excel,python-2.7,pandas,openpyxl,xlutils,Excel,Python 2.7,Pandas,Openpyxl,Xlutils,我这里有一些python代码,它使用openpyxl创建了一个.xlsx文件 但是,当我试图修改该文件时,新数据将注册到该文件中,但以前的数据已丢失。我听说过使用deepcopy或(.copy.copy)复制文件的数据,但是如何将复制的数据加上当前编辑粘贴到.xlsx文件中 (*此处缺少一些代码,因为它是一个带有GUI的程序,代码太长) 注意,编辑部分将覆盖openpyxl文档中警告的现有数据。我真的找不到修改现有.xlsx文件的方法。请帮帮我,我被困在这里了。我已经遇到过好几次这个问题,但还不

我这里有一些python代码,它使用openpyxl创建了一个.xlsx文件

但是,当我试图修改该文件时,新数据将注册到该文件中,但以前的数据已丢失。我听说过使用deepcopy或(.copy.copy)复制文件的数据,但是如何将复制的数据加上当前编辑粘贴到.xlsx文件中

(*此处缺少一些代码,因为它是一个带有GUI的程序,代码太长)


注意,编辑部分将覆盖openpyxl文档中警告的现有数据。我真的找不到修改现有.xlsx文件的方法。请帮帮我,我被困在这里了。

我已经遇到过好几次这个问题,但还不能用纯python解决它;但是,可以使用以下代码从Python脚本调用VBA宏,该脚本可用于修改现有excel文件

这让我想出了一些创造性的方法来简化工作,这样我就不必打开excel文件来更新它们,即使数据处理或收集需要python

# run excel macro from python
import win32com.client
fn = '//path/filename.xlsm'
xl=win32com.client.Dispatch("Excel.Application")
xl.Application.Visible = True
xl.Workbooks.Open(Filename = fn,ReadOnly = 1)
xl.Application.Run("macroname")
xl=0

我不明白问题是什么:openpyxl允许您编辑现有文件,这包括覆盖数据。此外,上述代码中的代码不必要地冗长。当新数据保存到文件中时,会导致文件中的原始数据丢失@charledgetlarkWhat data is lost what?您故意用全新工作簿替换文件“list.xlsx”。因此,如果我用全新工作簿替换旧文件,我应该如何打开和修改现有工作簿?我查看了文档,但我确实无法理解如何使用
load\u workbook()
打开和编辑现有文件。正如您在代码顶部所做的那样。您是否介意向我展示一些如何更新xlsx文件的示例?可能是一个虚拟文件?谢谢你,内森Clement@HashashihnAltheim这真的取决于你想做什么。通常我从要修改的master.xlsm开始。它通常有一堆图表、条件格式和数据验证,这使得在Python中很难修改。然后,我将使用Python将新数据导出到已知位置,然后使用Python调用master.xlsm中的宏,该宏将导出复制到主电子表格中。
# run excel macro from python
import win32com.client
fn = '//path/filename.xlsm'
xl=win32com.client.Dispatch("Excel.Application")
xl.Application.Visible = True
xl.Workbooks.Open(Filename = fn,ReadOnly = 1)
xl.Application.Run("macroname")
xl=0