C# 我无法使用epplus将日期筛选为月份、年份、日期和生成的excel

C# 我无法使用epplus将日期筛选为月份、年份、日期和生成的excel,c#,.net,sql-server,excel,epplus,C#,.net,Sql Server,Excel,Epplus,我有一个视图,从中过滤数据并显示搜索结果,我将日期格式更改为 convert(varchar(11),getdate(),113) 这是视图中的格式 在excel中下载之后,它只是给出了所有日期。没有可用的分组。 我尝试了几种格式来更改Excel中的日期格式以及类似代码的格式 ews.Column(i).Style.Numberformat.Format = "d-mmm-yy"; 但是没有用 我的视图返回日期,如2014年3月19日 我希望将日期分组,格式为2014年3月19日 请给我一

我有一个视图,从中过滤数据并显示搜索结果,我将日期格式更改为

convert(varchar(11),getdate(),113) 
这是视图中的格式

在excel中下载之后,它只是给出了所有日期。没有可用的分组。 我尝试了几种格式来更改Excel中的日期格式以及类似代码的格式

ews.Column(i).Style.Numberformat.Format = "d-mmm-yy";
但是没有用

我的视图返回日期,如2014年3月19日

我希望将日期分组,格式为2014年3月19日


请给我一个可行的答案。

不要在视图中进行任何转换,例如,让它返回getdate()并在EPPlus代码中设置格式。我将其用于我的一个项目,它将允许在Excel中正确选择/设置格式。

我同意Jordan的观点,即不应在数据库中设置日期格式,而应将其作为SQL DATETIME,C#DATETIME返回到.NET代码中。如果您这样做,您就可以更好地控制如何将其写入电子表格

select replace(convert(varchar(11),getdate(),113),' ','-')
var file = new FileInfo(@"C:\Temp\ExcelDemo.xlsx");
using (var package = new ExcelPackage(file))
{
    var worksheet = package.Workbook.Worksheets.Add("Demo");

    var date = DateTime.Now;
    worksheet.Cells[1, 1].Value = @"Date Raw";
    worksheet.Cells[1, 2].Value = @"Date Raw with Style.Numberformat.Format = ""D-MMM-YY""";
    worksheet.Cells[1, 3].Value = @".ToString()";
    worksheet.Cells[1, 4].Value = @".ToString(dd MMM yy)";
    worksheet.Cells[1, 5].Value = @".ToString(yyyy-MM-ddTHH\:mm\:ss.fffffffzzz)";

    worksheet.Column(2).Style.Numberformat.Format = "D-MMM-YY";

    worksheet.Cells[2, 1].Value = date;
    worksheet.Cells[2, 2].Value = date;
    worksheet.Cells[2, 3].Value = date.ToString();
    worksheet.Cells[2, 4].Value = date.ToString(@"dd MMM yy");
    worksheet.Cells[2, 5].Value = date.ToString(@"yyyy-MM-ddTHH\:mm\:ss.fffffffzzz");

    package.Save();
}

您确定吗,使用
convert(varchar(11),getdate(),113)
得到的“日期”实际上是Excel中的日期,而不仅仅是文本?对于数据传输,我将使用任何ISO日期格式yyyy-mm-dd。因此,使用
convert(varchar(10),getdate(),120)
在Excel中获取真正的日期,然后在Excel中对其进行格式设置。我尝试了相同的方法,但没有用,它以该格式显示日期,但已完成分组。请避免使用代码答案解决方案,解释一下发生了什么,我刚得到了日期,然后格式化了,所以它对我很有用。