将空白DB值导出为Excell

我试图导出一个数据表,我从一个查询填充,但是我收到exception与最后一行消息“无效的单元格值”。

这只有在列包含空值时才会发生。 我怎样才能修改我的数据表来replace一个string的空值或作为空白空间在Excel文件中写入空值。

这是我有的代码:

DataSet ds = new DataSet("New_DataSet"); DataTable dt = new DataTable("New_DataTable"); ds.Locale = System.Threading.Thread.CurrentThread.CurrentCulture; dt.Locale = System.Threading.Thread.CurrentThread.CurrentCulture; OracleDataAdapter adptr = new OracleDataAdapter(); try { con.Open(); var oracmd = con.CreateCommand(); oracmd.CommandText = "select Column1,Column2 from Test"; adptr.SelectCommand = oracmd; adptr.Fill(dt); con.Close(); ds.Tables.Add(dt); SaveFileDialog saveFileDialog1 = new SaveFileDialog { Filter = "Excell files (*.xls)|*.xls"; RestoreDirectory = true; }; if (saveFileDialog1.ShowDialog() == DialogResult.OK) ExcelLibrary.DataSetHelper.CreateWorkbook(saveFileDialog1.FileName, ds); 

我使用这个方法为了检查一个DataSet的空值并replace它们:

 public static DataSet DBNull(DataSet dataSet) { try { foreach (DataTable dataTable in dataSet.Tables) foreach (DataRow dataRow in dataTable.Rows) foreach (DataColumn dataColumn in dataTable.Columns) if (dataRow.IsNull(dataColumn)) { if (dataColumn.DataType.IsValueType) dataRow[dataColumn] = Activator.CreateInstance(dataColumn.DataType); else if (dataColumn.DataType == typeof(bool)) dataRow[dataColumn] = false; else if (dataColumn.DataType == typeof(Guid)) dataRow[dataColumn] = Guid.Empty; else if (dataColumn.DataType == typeof(string)) dataRow[dataColumn] = string.Empty; else if (dataColumn.DataType == typeof(DateTime)) dataRow[dataColumn] = DateTime.MaxValue; else if (dataColumn.DataType == typeof(int) || dataColumn.DataType == typeof(byte) || dataColumn.DataType == typeof(short) || dataColumn.DataType == typeof(long) || dataColumn.DataType == typeof(float) || dataColumn.DataType == typeof(double)) dataRow[dataColumn] = 0; else dataRow[dataColumn] = null; } return dataSet; } catch (Exception ex) { return dataSet; } }