EPPlus 编辑的 XLSM 文件在 Excel 中显示错误
EPPlus edited XLSM files show Error in Excel
我使用 EPPlus 库来批量编辑一些现有的 XLSM 文件。在文件中,我替换了一行 VBA 代码,仅此而已。如果我在 Excel 代码编辑器中手动编辑同一行,一切都很好。
当我打开某些 Excel 2013 (15.0.4989.1000) 的文件时,显示以下错误消息。
We found a problem with some content in 'test.xlsm'. Do you want us to
recover as much as we can? If you trust the source of this workbook,
click Yes.
如果我单击“是”,修复报告会显示以下条目。但该消息过于笼统,无法进一步帮助我。
Removed Records: Named range from /xl/workbook.xml-Part (Arbeitsmappe)
这是我的 C# 代码,用于编辑 XLSM 文件。我可以更新我的代码还是必须在编辑之前更新 XLSM 文件?
static void PatchVba(string filePath, string oldCode, string newCode)
{
var wbFileInfo = new FileInfo(filePath);
using (var package = new ExcelPackage(wbFileInfo, false))
{
foreach (var m in package.Workbook.VbaProject.Modules)
{
if (m.Code.Contains(oldCode))
{
m.Code = m.Code.Replace(oldCode, newCode);
Console.WriteLine("VBA Patched in \"{0}\"", filePath);
}
}
try
{
package.SaveAs(wbFileInfo);
}
catch
{
Console.WriteLine("Could not save patched file \"{0}\".", filePath);
}
}
}
我找到问题所在了。在编辑后的 XLSM 文件中,范围名称多次使用且范围重叠。我太专注于我的 C# 代码而没有找到根本原因。
因此删除命名范围可以解决问题。但是知道为什么我可以毫无问题地使用 Excel 而不是使用 EPPlus 编辑它仍然很有趣。
我使用 EPPlus 库来批量编辑一些现有的 XLSM 文件。在文件中,我替换了一行 VBA 代码,仅此而已。如果我在 Excel 代码编辑器中手动编辑同一行,一切都很好。
当我打开某些 Excel 2013 (15.0.4989.1000) 的文件时,显示以下错误消息。
We found a problem with some content in 'test.xlsm'. Do you want us to recover as much as we can? If you trust the source of this workbook, click Yes.
如果我单击“是”,修复报告会显示以下条目。但该消息过于笼统,无法进一步帮助我。
Removed Records: Named range from /xl/workbook.xml-Part (Arbeitsmappe)
这是我的 C# 代码,用于编辑 XLSM 文件。我可以更新我的代码还是必须在编辑之前更新 XLSM 文件?
static void PatchVba(string filePath, string oldCode, string newCode)
{
var wbFileInfo = new FileInfo(filePath);
using (var package = new ExcelPackage(wbFileInfo, false))
{
foreach (var m in package.Workbook.VbaProject.Modules)
{
if (m.Code.Contains(oldCode))
{
m.Code = m.Code.Replace(oldCode, newCode);
Console.WriteLine("VBA Patched in \"{0}\"", filePath);
}
}
try
{
package.SaveAs(wbFileInfo);
}
catch
{
Console.WriteLine("Could not save patched file \"{0}\".", filePath);
}
}
}
我找到问题所在了。在编辑后的 XLSM 文件中,范围名称多次使用且范围重叠。我太专注于我的 C# 代码而没有找到根本原因。
因此删除命名范围可以解决问题。但是知道为什么我可以毫无问题地使用 Excel 而不是使用 EPPlus 编辑它仍然很有趣。