简体   繁体   English

我无法使用epplus使用生成的Excel将日期过滤为月,年,日期

[英]I am not able to filter date to Month, Year, Date with generated excel using epplus

I have a view, from which I filter data and show the search results, I changed the Date format to 我有一个视图,可以从中过滤数据并显示搜索结果,我将日期格式更改为

convert(varchar(11),getdate(),113) 

This is the format in view 这是视图中的格式

After downloading in excel, it is just giving all dates. 在excel中下载后,它只是给出所有日期。 No grouping is available. 没有分组可用。 I tried several formatting to change the date format in Excel as well as code like 我尝试了几种格式来更改Excel中的日期格式以及类似的代码

ews.Column(i).Style.Numberformat.Format = "d-mmm-yy";

but no use. 但没有用。

My View returns date like 19 Mar 2014 我的查看返回日期如19 Mar 2014

I want grouping of date with format as 19-Mar-2014 我想按格式将日期分组为19-Mar-2014

Please suggest me a working answer. 请给我建议一个可行的答案。

Don't do any conversion in the view, eg just have it return getdate() and set the format in EPPlus code. 不要在视图中进行任何转换,例如,让它返回getdate()并在EPPlus代码中设置格式。 I use this for one of my projects and it will allow selection / format correctly in Excel going this route. 我将其用于我的一个项目,它将允许在Excel中正确选择/设置格式。

I agree with Jordan in that you should not format the date within the database, but return it to your .NET code as a SQL DATETIME, C# DateTime. 我同意Jordan的观点,您不应格式化数据库中的日期,而应将其作为SQL DATETIME(C#日期时间)返回到您的.NET代码。 If you do that, you have more control over how you can write it into the spreadsheet. 如果这样做,则可以更好地控制将其写入电子表格的方式。

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();
}
select replace(convert(varchar(11),getdate(),113),' ','-')

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM