美好的一天,
我浏览了网络以寻求解决方案,但没有找到。
我们编写了一个代码,在Gridview上显示结果,并带有一个按钮,用于将数据导出到Excel电子表格。
Gridview启用了分页和排序。
但是,问题是导出的数据似乎在列标题上有超链接。
单击任何列标题时,会发生以下错误:
Microsoft Office已发现潜在的安全问题。 要保护您的计算机,请仅单击来自可信来源的链接...
有没有办法从Gridview将数据导出到Excel而没有列标题上的超链接?
答案 0 :(得分:0)
您应该使用gridview
或Dataset
来填充Datatable
,而不是使用gridview
来生成Excel文件。
这样做的代码就是。
public void ExportDataTableToExcel(DataTable dt, string filename)
{
HttpResponse response = HttpContext.Current.Response;
// first let's clean up the response.object
response.Clear();
response.Charset = "";
// set the response mime type for excel
response.ContentType = "application/vnd.ms-excel";
response.AddHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");
// create a string writer
using (StringWriter sw = new StringWriter())
{
using (HtmlTextWriter htw = new HtmlTextWriter(sw))
{
// instantiate a datagrid
DataGrid dg = new DataGrid();
dg.DataSource = dt;
dg.DataBind();
dg.RenderControl(htw);
response.Write(sw.ToString());
response.End();
}
}
}
您所要做的就是创建一个具有上述功能的类,并在页面代码中创建它的对象,并使用数据表和文件名称调用此函数。
答案 1 :(得分:0)
您的 ExportToExcel 函数可能对 HtmlTextWriter 执行 RenderControl。在调用该函数之前,您可以在 GridView 上关闭排序。不过,您还必须确保在此之后立即在 GridView 上调用 DataBind。顺序应该是:
' turn sorting off and call DataBind()
gvMyGridView.AllowSorting = False
gvMyGridView.DataBind()
' call your ExportToExcel function
ExportToExcel(gvMyGridView, "MyExport")
' turn sorting back on
gvMyGridView.AllowSorting = True