我有一个应用程序,按下单击按钮下载excel表,数据从ADO.NET数据表填充。现在的问题是,数据库中很少有数据列为NULL,它们在excel单元格中不打印为NULL,而是空白。如何在那些excel单元格中填充NULL值?
现在我循环遍历每一列,看看该值是否为Datetime(代码如下)。是否可以通过循环遍历每一行和列单元格来分配NULL值?
int colWorkSheet1 = 0;
foreach (DataColumn data in dataTable1.Columns)
{
colWorkSheet1++;
if (data.DataType == typeof(DateTime))
{
worksheet1.Column(colWorkSheet1).Style.Numberformat.Format = "MM/dd/yyyy";// use "MM/dd/yyyy hh:mm:ss AM/PM"; for time and seconds
}
}
你可以有一个扩展方法,如下所示:
public static void InsertSpecial(this ExcelWorkSheet me, int row, int col, object value)
{
if(value == null)
me.SetValue(row, col, "NULL");
else
me.SetValue(row, col, value);
if(value is DateTime)
me.Cells[row, col].Style.Numberformat.Format = "MM/dd/yyyy";
// add anything you want to check/do here
}
然后叫它:
xlWs.InsertSpecial(row, col, value);
代替:
xlWs.SetValue(row, col, value);