【发布时间】:2020-02-26 01:36:33
【问题描述】:
我在一页上有多个网格视图,有些带有文本框,有些带有标签/文本。标签是使用 javaScript 从其他文本框值计算出来的,并以这种方式放置在 gridview 中。问题是,标签没有导出到 excel。我想知道是不是因为它们是用 javaScript 动态创建的。但是,我也需要这些值来导出。任何帮助表示赞赏!
我在导出点击时再次尝试了数据绑定,但没有成功。
protected void export_Click(object sender, EventArgs e)
{
Response.ClearContent();
Response.AppendHeader("content-disposition", "attachment; filename=AvailableFundsCosts.xls");
Response.ContentType = "application/excel";
System.IO.StringWriter sw = new System.IO.StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gridSFS.RenderControl(htw);
gridTLS.RenderControl(htw);
gridPCOTotals.RenderControl(htw);
gridPTA.RenderControl(htw);
gridPC.RenderControl(htw);
gridTL.RenderControl(htw);
gridFinal.RenderControl(htw);
Response.Write(sw.ToString());
Response.End();
}
以下是 javascript 使用网格将标签值放置在网格视图的另一部分的示例:
function calculateGTASemestersOtherActivity()
{
var GTASemestersOtherActivity = parseFloat(document.getElementById("cphMain_gridPTA_iTxtAmount_4").value);
var GTASemesterStipend = parseFloat(document.getElementById("cphMain_gridTLS_iTxtAmount_5").value);
if(isNaN(GTASemestersOtherActivity))
{GTASemestersOtherActivity = 0.00;}
if(isNaN(GTASemesterStipend))
{GTASemesterStipend = 0.00;}
var OtherActivityCost = parseFloat(GTASemestersOtherActivity * GTASemesterStipend);
var cell = document.getElementById("cphMain_gridPC").rows[8].cells;
cell[1].innerHTML = OtherActivityCost.toLocaleString('en-US', { style: 'currency', currency: 'USD' });
}
我需要标签值来导出 excel 以及文本框。
【问题讨论】:
-
开始使用专门的库来创建 Excel 文件,例如 EPPlus。 Example here 和 here。您现在所做的只是创建一个扩展名为 .xls 的 HTML 页面。并且 javascript 数据在后面的代码中不可用,因此您无法导出它。最好把后面代码中的数据也拿到GridView上,然后也可以导出。
-
原来我在后面的代码中也创建了这些值,我的解决方案是将这些值重新加载到 gridview。