【发布时间】:2014-09-29 16:51:43
【问题描述】:
我有一个大的 gridview 作为 Web 应用程序的一部分,它结合了绑定字段和模板字段,并定义了 DataFormatStrings 来定义值在单元格上的表示方式。我很难将所有这些转换为数据表,以便我可以将它们写入 Excel 工作表。
将 gridview 直接转换为 excel 迫使我使用仅生成 .xls 格式的 String Write 和 Html Write。我们正在考虑将所有 excel 下载选项标准化为 .xlsx 格式。这是我到目前为止所尝试的
dt = gvInvoicesEX.DataSource as DataTable;
DataSource 属性由于某种原因返回 null。我还尝试了循环内的正常循环技术来遍历网格视图中的每个单元格并将其复制到数据表中,但我只是得到一个充满空白单元格的数据表。
for (int i = 0; i < gvInvoicesEX.Rows.Count; i++)
{
DataRow dr = dt.NewRow();
for (int j = 1; j < gvInvoicesEX.Columns.Count; j++)
{
gvInvoicesEX.Rows[i].Cells[j].Attributes.Add("class", "text");
dr[j - 1] = gvInvoicesEX.Rows[i].Cells[j].Text;
}
dt.Rows.Add(dr);
}
以下是我的excel转换代码:
using (var wb = new XLWorkbook())
{
DataTable dt = GetDataTableFromGridView();
string fileName = "BillingDetail" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
wb.Worksheets.Add(dt);
Response.Clear();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment;filename=" + fileName);
using (var ms = new System.IO.MemoryStream())
{
wb.SaveAs(ms);
ms.WriteTo(Response.OutputStream);
ms.Close();
}
Response.End();
}
我可以在上述任何一项中进行更改以使这一切顺利进行吗?
【问题讨论】:
标签: c# asp.net gridview datatable