Я пытаюсь внести изменения в предоставленный клиентом файл .xlsm (приложение C # заполнит данные из веб-формы и отправит в CMS), используя EPPlus.
Но для 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
Даже при попытке рабочего листа. 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 МБ .xlsm. Файл сохраняет / сохраняет как хорошо (даже с новыми данными) из Excel.
ПРИМЕЧАНИЕ: очевидно, .xlsx файлы работают очень хорошо, но формат .xlsm содержит макросы VBA, которые нельзя сохранить в формате .xlsx, поэтому тип файла не может быть преобразован.