C# 从SQL结果集替换01/01/1900并使用C导出到Excel

C# 从SQL结果集替换01/01/1900并使用C导出到Excel,c#,export-to-excel,sqldatetime,C#,Export To Excel,Sqldatetime,我有上面的代码循环通过SQL结果集,该结果集稍后用于导出到Excel,当item.paid_日期为空时,在导出的Excel工作表中,日期显示为01/01/1900,如果日期为空,我如何用替换item.paid_日期 以下是存储过程,有时在读取表中没有任何记录,其中bg.bill\u number=p.bill\u number 您是否尝试过: CREATE PROCEDURE [dbo].[BillHistory] @accNo varchar(50) as begin select bg.Id

我有上面的代码循环通过SQL结果集,该结果集稍后用于导出到Excel,当item.paid_日期为空时,在导出的Excel工作表中,日期显示为01/01/1900,如果日期为空,我如何用替换item.paid_日期

以下是存储过程,有时在读取表中没有任何记录,其中bg.bill\u number=p.bill\u number

您是否尝试过:

CREATE PROCEDURE [dbo].[BillHistory] @accNo varchar(50) as begin select bg.Id, bg.account_number, bg.bill_number, bg.year, bg.month, bg.usagetotal, bg.fineamt, bg.fuelcharge, bg.othercharge, bg.totalamt, bg.totaldueamt, bg.billdate, bg.bill_due_date, bg.outstanding_amt, bg.[desc], readingId = re.Id, re.accountno, re.oldccountNo, re.new_reading, re.last_reading, re.meterno, re.yearref , re.monthref , re.referencecount, re.stdate, re.enddate, current_reading_date = re.created_on, pre_reading_date = isnull((select top 1 c.created_on from reading c where c.accountno = @accNo and c.Id < re.Id order by c.Id desc),CAST(-53690 as datetime)), re.duration, re.usage, re.averageusage, re.averageconsumption, isnull((select p.total_paid from payment p where bg.bill_number = p.bill_number ),0) as total_paid, isnull((select p.created_on from payment p where bg.bill_number = p.bill_number ),0) as paid_date from reading re join billing_gen bg on re.Id=bg.reading_id where re.accountno = @accNo and bg.enable=1 order by bg.Id asc; end;

如果item.paid_date==null未产生所需的结果,您可以尝试item.paid_date==System.DBNull.Value。另外,IDataReader对象有一个IsDbNull方法,如果SQL结果存储在DataReader中,您应该能够使用它。例如,IDataReader阅读器;sqlReader=ExecuteReaderStoredProc,args;如果sqlReader.IsDbNull0 tmp=reader.GetString0;
CREATE PROCEDURE [dbo].[BillHistory] @accNo varchar(50) as begin select bg.Id, bg.account_number, bg.bill_number, bg.year, bg.month, bg.usagetotal, bg.fineamt, bg.fuelcharge, bg.othercharge, bg.totalamt, bg.totaldueamt, bg.billdate, bg.bill_due_date, bg.outstanding_amt, bg.[desc], readingId = re.Id, re.accountno, re.oldccountNo, re.new_reading, re.last_reading, re.meterno, re.yearref , re.monthref , re.referencecount, re.stdate, re.enddate, current_reading_date = re.created_on, pre_reading_date = isnull((select top 1 c.created_on from reading c where c.accountno = @accNo and c.Id < re.Id order by c.Id desc),CAST(-53690 as datetime)), re.duration, re.usage, re.averageusage, re.averageconsumption, isnull((select p.total_paid from payment p where bg.bill_number = p.bill_number ),0) as total_paid, isnull((select p.created_on from payment p where bg.bill_number = p.bill_number ),0) as paid_date from reading re join billing_gen bg on re.Id=bg.reading_id where re.accountno = @accNo and bg.enable=1 order by bg.Id asc; end;
worksheet.Cells[rowNumber, 11].Value = item.paid_date == null ? string.Empty : item.paid_date.ToShortDateString();