【问题标题】:exporting excel sheet from gridview in asp.net从 asp.net 中的 gridview 导出 excel 工作表
【发布时间】:2013-03-14 06:40:59
【问题描述】:

我正在从我与虚拟数据绑定的 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()" />

它不工作。我实际上测试了 new ActiveXobject("Excel.Application");在开始导致问题。我需要做什么?

【问题讨论】:

  • “我正在从我的 gridview 导出 excel 工作表”是什么意思?你是想将gridview导出到excel还是什么?
  • 看看在ClosedXML上使用OpenXML。
  • 你检查过答案了吗?

标签: c# javascript jquery asp.net jquery-plugins


【解决方案1】:

我使用这个 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 存在一些挑战。

【讨论】:

  • 他正在使用 ASP.NET 服务器控件 - GridView 而不是 jQUery 插件 jqtable。但这是一件好事!
【解决方案2】:

您可以尝试以下代码将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();
    }

【讨论】:

  • 您可以将其添加到UpdatePanel
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
相关资源
最近更新 更多