C# 每个数据行的奇怪输出。添加到Excel

C# 每个数据行的奇怪输出。添加到Excel,c#,asp.net,asp.net-mvc,datatable,epplus,C#,Asp.net,Asp.net Mvc,Datatable,Epplus,我有一个从数据表(使用linq)生成excel文件的方法,当我生成文件时,excel会重复每一行、每一个单元格 我的代码添加预定义的列,然后对于每一行,它应该返回整行,而不是每个单元格+每个单元格 var query = db.vistaRobot.ToList().Where(a => a.fechaFiltro2 >= dateInt && a.filtroModifica == null).ToArray();

我有一个从数据表(使用linq)生成excel文件的方法,当我生成文件时,excel会重复每一行、每一个单元格

我的代码添加预定义的列,然后对于每一行,它应该返回整行,而不是每个单元格+每个单元格

                var query = db.vistaRobot.ToList().Where(a => a.fechaFiltro2 >= dateInt && a.filtroModifica == null).ToArray();

                DataTable tablaDespacho = new DataTable();

                tablaDespacho.Columns.Add(new DataColumn()
                {
                    DataType = System.Type.GetType("System.String"),
                    ColumnName = "Nombre Colaborador"
                });
                //DataTable tablaDespacho = query.CopyToDataTable<DataRow>();
                tablaDespacho.Columns.Add(new DataColumn()
                {
                    DataType = System.Type.GetType("System.String"),
                    ColumnName = "Tipo de Tiempo"
                });


                tablaDespacho.Columns.Add(new DataColumn()
                {
                    DataType = System.Type.GetType("System.String"),
                    ColumnName = "Tipo de Licencia"
                });


                tablaDespacho.Columns.Add(new DataColumn()
                {
                    DataType = System.Type.GetType("System.String"),
                    ColumnName = "Fecha Inicio"
                });


                tablaDespacho.Columns.Add(new DataColumn()
                {
                    DataType = System.Type.GetType("System.String"),
                    ColumnName = "Fecha de Finalizacion"
                });

                tablaDespacho.Columns.Add(new DataColumn()
                {
                    DataType = System.Type.GetType("System.String"),
                    ColumnName = "Fecha de Alumbramiento"
                });

                tablaDespacho.Columns.Add(new DataColumn()
                {
                    DataType = System.Type.GetType("System.String"),
                    ColumnName = "Fuero"
                });


                tablaDespacho.Columns.Add(new DataColumn()
                {
                    DataType = System.Type.GetType("System.String"),
                    ColumnName = "Nro Folio"
                });


                tablaDespacho.Columns.Add(new DataColumn()
                {
                    DataType = System.Type.GetType("System.String"),
                    ColumnName = "Lugar de Reposo"
                });

                foreach (var element in query)
                {
                    var row =
                    tablaDespacho.NewRow();
                    //tablaDespacho.Rows.Add(row);
                    tablaDespacho.Rows.Add(row.ItemArray);

                    // A LOT OF ROWS INSIDE

                    //tablaDespacho.Rows.Add(row);
                    tablaDespacho.Rows.Add(row.ItemArray);

                    row["Lugar de Reposo"] = element.Lugar_de_Reposo;
                    //tablaDespacho.Rows.Add(row);
                    tablaDespacho.Rows.Add(row.ItemArray);
                }
var query=db.vistaRobot.ToList()。其中(a=>a.fechaFiltro2>=dateInt&&a.filtroModifica==null)。ToArray();
DataTable tablaDespacho=新DataTable();
tablaDespacho.Columns.Add(新数据列()
{
DataType=System.Type.GetType(“System.String”),
ColumnName=“Nombre Colaborador”
});
//DataTable tablaDespacho=query.CopyToDataTable();
tablaDespacho.Columns.Add(新数据列()
{
DataType=System.Type.GetType(“System.String”),
ColumnName=“Tipo de Tiempo”
});
tablaDespacho.Columns.Add(新数据列()
{
DataType=System.Type.GetType(“System.String”),
ColumnName=“Tipo de Licensia”
});
tablaDespacho.Columns.Add(新数据列()
{
DataType=System.Type.GetType(“System.String”),
ColumnName=“Fecha Inicio”
});
tablaDespacho.Columns.Add(新数据列()
{
DataType=System.Type.GetType(“System.String”),
ColumnName=“Fecha de Finalizacion”
});
tablaDespacho.Columns.Add(新数据列()
{
DataType=System.Type.GetType(“System.String”),
ColumnName=“Fecha de Alumbramiento”
});
tablaDespacho.Columns.Add(新数据列()
{
DataType=System.Type.GetType(“System.String”),
ColumnName=“Fuero”
});
tablaDespacho.Columns.Add(新数据列()
{
DataType=System.Type.GetType(“System.String”),
ColumnName=“Nro Folio”
});
tablaDespacho.Columns.Add(新数据列()
{
DataType=System.Type.GetType(“System.String”),
ColumnName=“Lugar de Reposo”
});
foreach(查询中的var元素)
{
var行=
tablaDespacho.NewRow();
//tablaDespacho.Rows.Add(row);
tablaDespacho.Rows.Add(row.ItemArray);
//里面有很多行
//tablaDespacho.Rows.Add(row);
tablaDespacho.Rows.Add(row.ItemArray);
行[“Lugar de Reposo”]=element.Lugar_de_Reposo;
//tablaDespacho.Rows.Add(row);
tablaDespacho.Rows.Add(row.ItemArray);
}

我知道for each上有错误,但我找不到后面的登录名。

这是因为您正在调用
tabladespaccho.Rows.Add(row.ItemArray)多次,同时设置行的每列数据

您应该使用
tablaDespacho.NewRow()
创建新行,然后将属性添加到行中,最后只需调用
tablaDespacho.Rows.add(row)每行一次,如下所示:

foreach (var element in query)
{
    var row = tablaDespacho.NewRow();

    row["Lugar de Reposo"] = element.Lugar_de_Reposo;
    //The other properties

    tablaDespacho.Rows.Add(row);

}

您不需要创建要添加到EPPlus的数据表。您也可以直接使用
IEnumerable

ws.Cells["A1"].LoadFromCollection(db.vistaRobot.ToList(), true);

为什么要多次调用
tablaDespacho.Rows.Add(row.ItemArray)?该死,我没看到那一行,我想这意味着每列的值都来自那一行。谢谢