【问题标题】:Exception: System.ArgumentNullException: Value cannot be null异常:System.ArgumentNullException:值不能为空
【发布时间】:2020-03-01 12:08:33
【问题描述】:

我正在尝试将数据调用到 Excel 并使用存储过程将 Excel 导出到电子邮件中。但是,我有错误消息显示

异常:System.ArgumentNullException:值不能为空。参数名称:来源

我收到一条错误消息,显示它来自我的数据表源

这是我从存储过程中调用我的 SQL 的地方:

public List<DTO_List_Non_Upload> CallNonUpload()
{
    var value = db.Database.SqlQuery<DTO_List_Non_Upload>("[WPSV2_Get_Non_Upload_Photo_Information] @DateFrom, @DateTo, @contractNo",
                   // get the cdr date for today  parameter: datetime
                   new SqlParameter("@DateFrom", "20191001"),
                   // oc 
                   new SqlParameter("@DateTo", "20191009"),
                   new SqlParameter("@contractNo", "Patrolmanwe")).ToList();

    return value;
}

这是我希望我将数据作为函数返回的地方 EmailSender():

public List<DTO_List_Non_Upload> EmailSender()
{
    return patrol_Export_Services.CallNonUpload();
}

这是我想将我的 sql 数据导入 Excel 的地方:

var mylist = new List<DTO_List_Non_Upload>();

mylist = EmailSender();

string filepath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, System.Configuration.ConfigurationSettings.AppSettings["Exportexcel"].ToString());

ExcelXlsx excelXlsx = new ExcelXlsx(filepath);

DataTable Source = mylist.ToDataTable<DTO_List_Non_Upload>();
excelXlsx.RenderDataTableToSheet(0, Source, 1, 0, false);

错误:

异常:System.ArgumentNullException:值不能为空。

参数名称:来源

在 System.Linq.Enumerable.Contains[TSource](IEnumerable1 source, TSource value, IEqualityComparer1 比较器)
在 C:\coding\ks-photo\branches\NewOA4600007097_export\Patrol_Excel_Export\KS.utils\Common\Extension.cs 中的 KS.Utils.Common.Extension.ToDataTable[T](IList`1 data, String[] ignoreProperties):第 29 行
在 C:\coding\ks-photo\branches\NewOA4600007097_export\Patrol_Excel_Export\Patrol_Excel_Export\SchedulerPatrolExport.cs:line 93 中的 Patrol_Excel_Export.SchedulerPatrolExport.run()
在 C:\coding\ks-photo\branches\NewOA4600007097_export\Patrol_Excel_Export\Patrol_Excel_Export\Program.cs:line 47 中的 Patrol_Excel_Export.Program.Main(String[] args)

【问题讨论】:

标签: c# sql .net stored-procedures


【解决方案1】:

查看堆栈跟踪

在 System.Linq.Enumerable.Contains[TSource](IEnumerable1 源, TSource 值,IEqualityComparer1 比较器)在 KS.Utils.Common.Extension.ToDataTable

mylist 为空

if(mylist == null)
   // Throw exceotpion or do something else
else {
   DataTable Source = mylist.ToDataTable<DTO_List_Non_Upload>();
   excelXlsx.RenderDataTableToSheet(0, Source, 1, 0, false);
}

【讨论】:

  • 您好,感谢您的回复,但是当我执行时,程序显示 mylist 有数据。我该怎么办,请帮帮我。其实我的来源是空的,但是为什么呢?
  • 您必须在 Extension.cs 中的函数“ToDataTable”中进行调试
  • 我已经解决了这个问题。但是我无法将数据导出到我的 excel 中。 Mylist 显示 358 条记录,但无法在 excel 中生成。是否有一场战争让你脱颖而出。谢谢。我认为是数据表问题
猜你喜欢
  • 1970-01-01
  • 2021-08-01
  • 2020-09-25
  • 2013-02-10
  • 1970-01-01
  • 2019-11-01
  • 1970-01-01
  • 2018-07-10
  • 2021-10-11
相关资源
最近更新 更多