Je tente de modifier un fichier .xlsm fourni par le client (une application C# remplira les données d'un formulaire web et soumettre à un CMS) en utilisant EPPlus.EPPlus renvoie l'exception DataValidations "La valeur demandée 'date' n'a pas été trouvée." en essayant de sauver xlsm
Mais sur package.Save (nom) - ou packagae.SaveAs (nom) - une exception est levée par la collection 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
tenter même worksheet.DataValidations.Clear() renvoie la même exception, et ce est sans aucune modification au fichier:
try
{
using (ExcelPackage package = new ExcelPackage(output))
{
package.SaveAs(output);
}
}
catch (Exception ex)
{
_log.Error(ex.ToString());
}
Je n'ai pas ce comportement dans un fichier Excel que je crée de toutes pièces, mais j'ai besoin d'utiliser le fichier fourni.
Je ne sais pas si c'est important, mais je travaille dans le Framework .Net 4, et c'est un fichier .xlsm de 1,01 Mo. Le fichier enregistre/enregistre-aussi bien (même avec de nouvelles données) à partir d'Excel.
REMARQUE: apparemment .xlsx fichiers fonctionnent très bien, mais le format .xlsm contient des macros VBA qui ne peuvent pas être enregistrés dans le format .xlsx, de sorte que le type de fichier ne peut pas être converti.
Une question SO non résolue suggère également que EPPlus ne fonctionne pas pour les fichiers xlsm: http://stackoverflow.com/questions/6336803/library-for-c-sharp-to-read-excel-2007-xlsm-file –