Nuestro equipo de redactores ha estado largas horas buscando para dar soluciones a tu duda, te brindamos la respuesta y esperamos que te resulte de gran ayuda.
Solución:
Estoy de acuerdo con Yosoyke. Probablemente esté apuntando a las celdas equivocadas. Puedes probar:
ws.Cells["A3"].Style.Numberformat.Format = "yyyy-mm-dd";
ws.Cells["A3"].Formula = "=DATE(2014,10,5)";
worksheet.Cells["YOURDATECELL_OR_YOURDATECELLRANGE"].Style.Numberformat.Format = "mm-dd-yy";
si usas la fórmula mencionada por taraz. agregue hoja de trabajo. Calcular () al final. referencia https://epplus.codeplex.com/wikipage?title=About%20Formula%20calculation
O en lugar de usar fórmula, enfoque alternativo
private static decimal GetExcelDecimalValueForDate(DateTime date)
DateTime start = new DateTime(1900, 1, 1);
TimeSpan diff = date - start;
return diff.Days + 2;
Referencia
worksheet.Cells["A2"].Value = GetExcelDecimalValueForDate(Convert.ToDateTime('2016-04-29'));
worksheet.Cells["A2"].Style.Numberformat.Format = "mm-dd-yy";//or m/d/yy h:mm
De forma predeterminada, cuando Excel guarda un campo de fecha, lo guarda como numFormatId
14 (Mira los archivos xml en los xls). Esto asegura que los formatos de fecha sean correctos en cualquier país cuando se abre el archivo. En Epplus mm-dd-yy
se traduce a numFormatId
14 para excel. Esto asegurará que cuando el archivo se abra en cualquier país, la fecha tendrá el formato correcto según la configuración de fecha corta del país. También noté m/d/yy h:mm
formatos correctamente para cualquier país.
var dateColumns = from DataColumn d in dt.Columns
where d.DataType == typeof(DateTime) || d.ColumnName.Contains("Date")
select d.Ordinal + 1;
foreach (var dc in dateColumns)
worksheet.Cells[2, dc, rowCount + 2, dc].Style.Numberformat.Format = "mm/dd/yyyy hh:mm:ss AM/PM";
formateará todas las columnas con el encabezado Fecha en el formato específico dado/proporcionado
Te invitamos a sostener nuestro ensayo dejando un comentario y dejando una valoración te damos las gracias.