C# 用C语言剥离Excel宏文件#

C# 用C语言剥离Excel宏文件#,c#,xml,excel,office-interop,C#,Xml,Excel,Office Interop,我被要求去掉Excel文件中的宏,只留下数据。我被要求将Excel文件转换为XML,然后使用C#将该文件读回Excel。这对我来说似乎有点低效,我想简单地将源Excel文件加载到C#中,然后创建一个新的目标Excel文件,并将源Excel文件中的工作表添加回目标Excel文件会更容易 我不知道宏在Excel文件中的位置,所以我不确定这是否能完成任务。那么,这行得通吗?简单地将工作表从一个文件复制到另一个文件,是否会将其从宏中剥离,或者它们实际上存储在工作表级别 和往常一样,欢迎任何和所有建议,包

我被要求去掉Excel文件中的宏,只留下数据。我被要求将Excel文件转换为XML,然后使用C#将该文件读回Excel。这对我来说似乎有点低效,我想简单地将源Excel文件加载到C#中,然后创建一个新的目标Excel文件,并将源Excel文件中的工作表添加回目标Excel文件会更容易

我不知道宏在Excel文件中的位置,所以我不确定这是否能完成任务。那么,这行得通吗?简单地将工作表从一个文件复制到另一个文件,是否会将其从宏中剥离,或者它们实际上存储在工作表级别


和往常一样,欢迎任何和所有建议,包括备选建议,甚至“你为什么这么做?”:)

您最好将工作簿保存为xlsx,关闭它,打开它,然后保存为您选择的格式

这将剥离宏,并且非常健壮。如果VBA被锁定以供查看,它也将起作用


必须关闭并重新打开工作簿,否则宏将保留。

最好将工作簿保存为xlsx,关闭它,打开它,然后保存为您选择的格式

这将剥离宏,并且非常健壮。如果VBA被锁定以供查看,它也将起作用


必须关闭并重新打开工作簿,否则宏将被保留。

要以编程方式执行此操作,可以使用C#中.NET中System.IO.Compression库中的ZipFile类。(.NET Framework 4.5)


重命名该文件以添加“.zip”扩展名,然后将该文件作为zip存档打开。在生成的名为“vbproject.bin”的“xl”文件夹中查找一个元素,并将其删除。删除.zip扩展名。宏消失。

要以编程方式执行此操作,可以使用C#中.NET中System.IO.Compression库中的ZipFile类。(.NET Framework 4.5)

重命名该文件以添加“.zip”扩展名,然后将该文件作为zip存档打开。在生成的名为“vbproject.bin”的“xl”文件夹中查找一个元素,并将其删除。删除.zip扩展名。宏消失了。

如果您需要使用C#来完成此操作,我同意将源Excel文件加载到C#中并创建一个新的目标文件会更容易,只需复制所需的单元格和工作表即可。特别是如果你对大量的excel文件执行此操作,我建议只创建一个小的控制台应用程序,当给你一个excel工作表时,它会自动生成一个新的excel工作表,其中只包含数据

我发现有一个工具非常有用,并且很容易用于此类任务,那就是

如果您需要使用C#来完成此操作,我同意将源Excel文件加载到C#中并创建一个新的目标文件会更容易,只需复制所需的单元格和工作表即可。特别是如果你对大量的excel文件执行此操作,我建议只创建一个小的控制台应用程序,当给你一个excel工作表时,它会自动生成一个新的excel工作表,其中只包含数据


我发现有一个工具非常有用,并且很容易用于此类任务,那就是

我只想使用Excel Interop将文件保存为.xlsx。复制工作表可能会丢失信息,例如文件属性。您只需删除包含宏代码的嵌入式VBA项目,就可以开始了。我只想使用Excel Interop将文件保存为.xlsx。复制工作表可能会丢失信息,例如文件属性。您只需删除包含宏代码的嵌入式VBA项目,就可以开始工作。这或多或少是我选择的解决方案。但是,它实际上不允许我按原样将.xlsm保存为.xlsx。在保存宏之前,我必须将其剥离出来,否则会出现错误。这或多或少是我选择的解决方案。但是,它实际上不允许我按原样将.xlsm保存为.xlsx。在保存宏之前,我必须去掉宏,否则会出错。