EPPlus日期单元格数据类型不起作用

石匠

我有一些接受IEnumerable并从中生成Excel文档的代码。IEnumerable中的对象有一个日期字段,我希望这些对象在Excel中被格式化为日期。但是,当您在Excel中查看时,日期似乎不是“日期”数据类型的,除非您双击该单元格,然后按Enter。当您这样做时,值将移到右对齐的位置,并且表格过滤器可以正常工作。如果您不双击并输入内容,则该值将保持左对齐,并且表格过滤器会将其视为文本而不是日期。我需要Excel将其视为开箱即用的日期。

这是我的代码。

/// <summary>
/// Converts any IEnumerable to an Excel Document. Objects appear in the order declared in the class.
/// </summary>
/// <typeparam name="T">Any object.</typeparam>
/// <param name="objects">List of objects to generate document from.</param>
/// <returns>Byte array representing a .xlsx file.</returns>
public static byte[] ToExcelDocument<T>(this IEnumerable<T> objects)
{
    int currentrow = 1;
    Type type = typeof(T);
    List<PropertyInfo> propertyinfos = type.GetProperties().ToList();
    int numcolumns = propertyinfos.Count;
    ExcelPackage pck = new ExcelPackage();
    ExcelWorksheet ws = pck.Workbook.Worksheets.Add(type.Name + "(s)");

    for (int i = 0; i < numcolumns; i++)
    {
        ws.Cells[currentrow, i + 1].Value = propertyinfos[i].Name;
    }
    currentrow++;
    foreach (object o in objects)
    {
        for (int i = 0; i < propertyinfos.Count; i++)
        {
            if (o.GetType().GetProperty(propertyinfos[i].Name).PropertyType == typeof(DateTime))
            {
                ws.Cells[currentrow, i + 1].Style.Numberformat.Format = "m/d/yyyy";
                DateTime dt = (DateTime)(o.GetType().GetProperty(propertyinfos[i].Name).GetValue(o, null));
            }
            else if (o.GetType().GetProperty(propertyinfos[i].Name).PropertyType == typeof(DateTime?))
            {
                DateTime? dt = (DateTime?)(o.GetType().GetProperty(propertyinfos[i].Name).GetValue(o, null));
                if (dt.HasValue)
                {
                    ws.Cells[currentrow, i + 1].Style.Numberformat.Format = "m/d/yyyy";
                    ws.Cells[currentrow, i + 1].Value = dt.Value.ToString("MM/dd/yyyy");
                }
            }
            else
            {
                ws.Cells[currentrow, i + 1].Value = o.GetType().GetProperty(propertyinfos[i].Name).GetValue(o, null);
            }
        }
        currentrow++;
    }

    ExcelAddressBase eab = new ExcelAddressBase(1, 1, currentrow - 1, numcolumns);
    ws.Tables.Add(eab, "MyTable");
    ws.Tables["MyTable"].TableStyle = OfficeOpenXml.Table.TableStyles.Medium15;
    ws.Cells.AutoFitColumns();
    MemoryStream ms = new MemoryStream();
    pck.SaveAs(ms);
    return ms.ToArray();
}

我认为这ws.Cells[currentrow, i + 1].Style.Numberformat.Format = "m/d/yyyy";足以实现我想要的功能,但是它似乎没有用。当您在Excel中的单元格上单击鼠标右键并转到“设置单元格格式”时,它表明已选择日期,但似乎不适用于表格过滤器。而不是“从最旧到最新”排序,而是“从a到z排序”。

沙皮犬

不要使用ToString(),

ws.Cells[currentrow, i + 1].Value = dt.Value; // dont do this -> .ToString("MM/dd/yyyy");

它无法确定数据格式是什么。我有一个与十进制数字类似的问题,我试图“预格式化”它们。

同样在您的第一个“ if”中,您在其中检查值是否为日期,是否应该将返回的值放入excel表中,而不是放入名为dt的新变量中?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过单元格中的按钮通过数据传递数据...不起作用...

来自分类Dev

如何设置单元格数据类型

来自分类Dev

使用Aspose更改excel单元格的数据类型?

来自分类Dev

如何确定excel单元格值类型(日期、字符串、浮点数等数据类型)

来自分类Dev

dataTables HTML5数据搜索单元格属性不起作用

来自分类Dev

比较工作表的单元格数据在 Excel VBA 中不起作用

来自分类Dev

jQuery更改表单元格的颜色不起作用

来自分类Dev

XMLWorker:单元格的垂直对齐不起作用

来自分类Dev

iOS:UICollectionView单元格选择不起作用

来自分类Dev

FPDF多单元格对齐不起作用

来自分类Dev

表格单元格对齐不起作用

来自分类Dev

滑动单元格时,clipToBounds不起作用

来自分类Dev

自动调整大小的单元格对我不起作用

来自分类Dev

jQuery表单元格输入不起作用

来自分类Dev

.NumberFormat在使用SUMIFS的单元格上不起作用

来自分类Dev

AgGrid按钮单击在单元格内不起作用

来自分类Dev

工具提示在表格单元格中不起作用

来自分类Dev

自动调整大小的单元格对我不起作用

来自分类Dev

表格单元格上的按钮不起作用-迅速

来自分类Dev

引用单元格时VLOOKUP不起作用

来自分类Dev

通过 Jquery 更新表的单元格不起作用

来自分类Dev

UIBarButtonItem 操作不起作用 UITableView 单元格

来自分类Dev

如何将excel单元格值转换为字符串类型?在excel中将单元格设置为文本类型不起作用

来自分类Dev

UICollectionView,单元格选择不起作用,单元格滚动良好

来自分类Dev

UICollectionView,单元格选择不起作用,单元格滚动良好

来自分类Dev

汇总矩阵单元格,总计不起作用,页脚不起作用

来自分类Dev

数据类型在函数参数内不起作用

来自分类Dev

自定义单元格Segue将数据发送到Second View控制器不起作用

来自分类Dev

从 API 加载单元格数据时,单个 UIView 滚动上的多个 UICollection 视图不起作用

Related 相关文章

  1. 1

    通过单元格中的按钮通过数据传递数据...不起作用...

  2. 2

    如何设置单元格数据类型

  3. 3

    使用Aspose更改excel单元格的数据类型?

  4. 4

    如何确定excel单元格值类型(日期、字符串、浮点数等数据类型)

  5. 5

    dataTables HTML5数据搜索单元格属性不起作用

  6. 6

    比较工作表的单元格数据在 Excel VBA 中不起作用

  7. 7

    jQuery更改表单元格的颜色不起作用

  8. 8

    XMLWorker:单元格的垂直对齐不起作用

  9. 9

    iOS:UICollectionView单元格选择不起作用

  10. 10

    FPDF多单元格对齐不起作用

  11. 11

    表格单元格对齐不起作用

  12. 12

    滑动单元格时,clipToBounds不起作用

  13. 13

    自动调整大小的单元格对我不起作用

  14. 14

    jQuery表单元格输入不起作用

  15. 15

    .NumberFormat在使用SUMIFS的单元格上不起作用

  16. 16

    AgGrid按钮单击在单元格内不起作用

  17. 17

    工具提示在表格单元格中不起作用

  18. 18

    自动调整大小的单元格对我不起作用

  19. 19

    表格单元格上的按钮不起作用-迅速

  20. 20

    引用单元格时VLOOKUP不起作用

  21. 21

    通过 Jquery 更新表的单元格不起作用

  22. 22

    UIBarButtonItem 操作不起作用 UITableView 单元格

  23. 23

    如何将excel单元格值转换为字符串类型?在excel中将单元格设置为文本类型不起作用

  24. 24

    UICollectionView,单元格选择不起作用,单元格滚动良好

  25. 25

    UICollectionView,单元格选择不起作用,单元格滚动良好

  26. 26

    汇总矩阵单元格,总计不起作用,页脚不起作用

  27. 27

    数据类型在函数参数内不起作用

  28. 28

    自定义单元格Segue将数据发送到Second View控制器不起作用

  29. 29

    从 API 加载单元格数据时,单个 UIView 滚动上的多个 UICollection 视图不起作用

热门标签

归档