【发布时间】:2009-01-09 23:44:44
【问题描述】:
我有一个带有按钮的页面,当我单击该按钮时,它会从数据库中检索数据并将其存储到数据表中并将其绑定到 GridView。此数据表存储在 Session 变量中。我还有一个将指定列从数据表导出到 excel 文件的按钮,但是当我第二次单击导出按钮时,出现以下错误:
对象引用未设置为对象的实例。
似乎发生在这一行:
dtExport.Columns["Business"].ColumnName = "被许可人";
我想我知道为什么了,原来的列叫“Business”,但是我导出的时候,想把列标题导出为Licensee,所以我把ColumnName改成了“Licensee”;但是,当我第二次调用 Export 时,它会再次查找 dtExport.Columns["Business"] 但它没有找到,因此会引发错误。我是否只需要检查该列是否已被重命名以解决此问题还是有其他方法?
这是执行导出的代码:
private void ExportExcel()
{
DataTable dtExport = Session["dtSearchResults"] as DataTable;
dtExport.Columns["Business"].ColumnName = "Licensee";
List<int> columnSelect = new List<int>();
columnSelect.Add(dtExport.Columns["Licensee"].Ordinal);
columnSelect.Add(dtExport.Columns["Name"].Ordinal);
columnSelect.Add(dtExport.Columns["Address"].Ordinal);
columnSelect.Add(dtExport.Columns["City"].Ordinal);
columnSelect.Add(dtExport.Columns["State"].Ordinal);
columnSelect.Add(dtExport.Columns["Zip"].Ordinal);
int[] ColList = columnSelect.ToArray();
GridViewExportUtil.ExportDetails(dtExport,
ColList,
GridViewExportUtil.ExportFormat.Excel,
string.Format("{0}_{1}-{2}-{3}{4}",
"SearchResults",
DateTime.Now.Month,
DateTime.Now.Day,
DateTime.Now.Year,
".xls"));
}
当您更改 ColumnName 时,即使您再次从 Session 获得新的 DataTable,它是否仍然存在?
【问题讨论】: