我被要求剥离Excel的Excel文件,只留下数据。通过将Excel文件转换为XML然后使用C#将该文件读回Excel,我被要求这样做。这对我来说似乎有点低效,我认为将源Excel文件简单地加载到C#然后创建一个新的目标Excel文件并将源表中的工作表添加回目标会更容易。
我不知道宏文件在Excel文件中的位置,所以我不确定这是否可以完成任务。那么,这会有用吗?只是简单地将工作表从一个文件复制到另一个文件中去除它的宏,还是它们实际存储在工作表级别?
与往常一样,欢迎提出任何建议,包括其他建议,甚至是#34;你为什么要这样做?"。 :)
答案 0 :(得分:1)
最好的办法是将工作簿保存为xlsx,关闭它,打开它,然后保存为您选择的格式。
这将剥离宏并且非常健壮。如果VBA被锁定以供查看,它也将起作用。
关闭并重新打开工作簿是必要的,否则将保留宏。
答案 1 :(得分:1)
要以编程方式执行此操作,您可以使用C#中.NET中的System.IO.Compression库中的ZipFile类。 (.NET Framework 4.5)
重命名文件以添加“.zip”扩展名,然后将该文件作为ZIP存档打开。在结果“xl”文件夹中查找名为“vbproject.bin”的元素,并将其删除。删除.zip扩展名。宏走了。
答案 2 :(得分:0)
如果您需要使用C#来执行此操作,我同意将源Excel文件加载到C#并创建仅在您需要的单元格和工作表上复制的新目标文件会更容易。特别是如果您为大量excel文件执行此操作,我建议您创建一个小型控制台应用程序,当给出excel表时,它将自动生成一个新的Excel工作表,其中只包含您的数据。
我发现一个非常有用且易于用于此类任务的工具是EPPlus。