當我嘗試使用,使(C#應用程序將填補從網絡形式的數據,並提交到CMS)更改爲客戶提供.XLSM文件EPPlus.EPPlus拋出DataValidations異常「找不到請求的值'date'」。試圖挽救XLSM
但在package.Save(名稱) - - 或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 Framework中工作,它是一個1.01 MB .xlsm文件。該文件在Excel中保存/保存 - 即使是新數據也是如此。
注意:顯然.xlsx文件工作得很好,但.xlsm格式包含無法保存爲.xlsx格式的VBA宏,因此文件類型無法轉換。
未答覆的SO問題也表明EPPlus不適用於xlsm文件:http://stackoverflow.com/questions/6336803/library-for-c-sharp-to-read-excel-2007-xlsm-file –