[英]exporting excel sheet from gridview in asp.net
我正在从我的gridview导出Excel工作表,并与虚假数据绑定。 我正在使用导出excel的jquery方法,但无法正常工作。 我在jQuery中具有以下功能。
<script type="text/javascript">
function exportToExcel()
{
var oExcel = new ActiveXObject("Excel.Application");
var oBook = oExcel.Workbooks.Add;
var oSheet = oBook.Worksheets(1);
var detailsTable = document.getElementById('<%= gvSearchResult.ClientID %>');
alert(detailsTable);
for (var y=0;y<detailsTable.rows.length;y++)
// detailsTable is the table where the content to be exported is
{
for (var x=0;x<detailsTable.rows(y).cells.length;x++)
{
var cellData = detailsTable.rows(y).cells(x).innerText;
var cellHTML = detailsTable.rows(y).cells(x).innerHTML;
if (cellHTML.toLowerCase().indexOf("<table") == -1 && cellHTML.toLowerCase().indexOf("schedule") == -1) // check to omit page numbers
{
oSheet.Cells(y+1,x+1) = cellData;
}
}
}
oExcel.Visible = true;
oExcel.UserControl = true;
}
我使用上述功能。 我点击了一个按钮,我想导出Excel工作表。 该按钮为:
<asp:Button runat="server" ID="btnClickXport" Text="Xport2Xcel" OnClientClick="exportToExcel()" />
它不起作用。 我实际上测试了新的ActiveXobject(“ Excel.Application”); 在开始的原因问题。 我需要做什么?
我已使用此jquery插件将html表导出到csv: https : //code.google.com/p/jqtable2csv/
用法示例:
$("#my-table").table2csv({
callback: function (csv, name) {
jQuery.post(
url, encodeURIComponent(csv),
function (data) {
location.href = "/file?csv=" + csv + "&name=" + name;
}
);
});
话虽这么说...如果您使用的是ASP.Net,则可能需要处理此服务器端,因为在旧版浏览器中使用javascript启动下载会遇到一些挑战。
您可以尝试下面的代码将datagridview
导出到excel:
protected void ExportResultToExcel(string fileName)
{
Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("content-disposition", "attachment;filename=" + fileName);
Response.Charset = "";
this.EnableViewState = false;
System.IO.StringWriter sw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw);
gvSearchResult.RenderControl(htw);
Response.Write(sw.ToString());
Response.End();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.