我正在尝试使用 EPPlus 更改客户提供的.xlsm文件(C# 应用程序将填充来自网络表单的数据并提交到 CMS)。
但是在 package.Save(name) 或 packagae.SaveAs(name) 上,DataValidations 集合会引发异常:
2011-11-28 14:17:51,380 [9] ERROR app.ExcelConverter - System.ArgumentException: Requested value 'date' was not found.
at System.Enum.EnumResult.SetFailure(ParseFailureKind failure, String failureMessageID, Object failureMessageFormatArgument)
at System.Enum.TryParseEnum(Type enumType, String value, Boolean ignoreCase, EnumResult& parseResult)
at System.Enum.Parse(Type enumType, String value, Boolean ignoreCase)
at OfficeOpenXml.DataValidation.ExcelDataValidationCollection..ctor(ExcelWorksheet worksheet)
at OfficeOpenXml.ExcelWorksheet.get_DataValidations()
at FItoExcelCore.ExcelConverter.RunSample(String filePath) in \path\to\class.cs:line 32
即使尝试 worksheet.DataValidations.Clear() 也会引发相同的异常,并且文件没有任何更改:
try
{
using (ExcelPackage package = new ExcelPackage(output))
{
package.SaveAs(output);
}
}
catch (Exception ex)
{
_log.Error(ex.ToString());
}
我从头开始创建的 excel 文件中没有这种行为,但我需要使用提供的文件。
不知道它是否重要,但我正在使用 .Net 4 Framework,它是一个 1.01 MB 的 .xlsm 文件。该文件从 Excel 中保存/保存为正常(即使使用新数据)。
注意:显然.xlsx文件可以正常工作,但 .xlsm 格式包含无法以 .xlsx 格式保存的 VBA 宏,因此无法转换文件类型。