epplus抛出datavalidations异常“未找到请求的值'日期'。尝试保存XLSM时
题
我正在尝试更改客户供应 .xlsm 文件(C#应用程序将使用Web形式填充数据,并提交给CMS) epplus。
但是在package.save(name)或packagae.saveas(名称)上 - 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框架中工作,并且是1.01 MB .xlsm文件。该文件从Excel内部保存/保存(即使有了新数据)。
注意:显然 .xlsx 文件工作正常,但是.xlsm格式包含无法保存以.xlsx格式的VBA宏,因此无法转换文件型。
解决方案
其他提示
您有最新版本的epplus吗?
他们解决了2011年3月的这个问题。这与验证类型不敏感有关。
看:http://epplus.codeplex.com/workitem/13246
编辑:如果不支持XLSM,您也可以尝试将其保存为.xlsx。
正如埃德(Ed)写的那样,我从2012年1月31日开始了最后一个版本的epplus,并且在验证方面非常有效。 Excel IM阅读和写作是.xlsx格式。
不隶属于 StackOverflow