我正在尝试更改客户供应 .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 Codeplex网站上,该网站表明“组件中没有对[XLSM文件]的真正支持。"

可能是问题的根源。

其他提示

您有最新版本的epplus吗?

他们解决了2011年3月的这个问题。这与验证类型不敏感有关。

看:http://epplus.codeplex.com/workitem/13246

编辑:如果不支持XLSM,您也可以尝试将其保存为.xlsx。

正如埃德(Ed)写的那样,我从2012年1月31日开始了最后一个版本的epplus,并且在验证方面非常有效。 Excel IM阅读和写作是.xlsx格式。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top