首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP表格到Excel

问ASP表格到Excel
EN

Stack Overflow用户
提问于 2013-05-21 15:50:43
回答 2查看 6.7K关注 0票数 0

在网站中查看ASPX时,我得到了一个单元格中几乎没有文本的表格,例如:

代码语言:javascript
复制
tab.Rows[1].Cells[1].innerHtml = "Booked :"

(在许多行和单元格中,但每个单元格中有不同的文本)

现在我只想单击一个按钮,表中的数据将被下载到一个Excel文件中。

表ID :页签

代码语言:javascript
复制
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        //Table tbl = new Table();
        TableRow tr = new TableRow();
        TableCell tcel = new TableCell();
        tcel.Text = "id";
        tr.Cells.Add(tcel);

        TableCell tcel1 = new TableCell();
        tcel1.Text = "id1";
        tr.Cells.Add(tcel1);

        tab.Rows.Add(tr);
    }
}
protected void Button1_Click(object sender, EventArgs e)
{
    string filename = "ExportExcel.xls";
    System.IO.StringWriter tw = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);

    //DataGrid dgGrid = new DataGrid();
    //dgGrid.DataSource = tbl;
    //dgGrid.DataBind();

    //Get the HTML for the control.             
    tab.RenderControl(hw);
    //Write the HTML back to the browser.
    //Response.ContentType = application/vnd.ms-excel;
    Response.ContentType = "application/vnd.ms-excel";
    Response.AppendHeader("Content-Disposition", "attachment; filename=" + filename + "");
    this.EnableViewState = false;
    Response.Write(tw.ToString());
    Response.End();
}

已使用watraplion回答进行修改,但仍未回答..以下位置出现错误:

代码语言:javascript
复制
DataTable dt = dt; //Use of unassigned local variable 'dt'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-21 15:59:35

试试这个:

aspx设计视图:

代码语言:javascript
复制
<body>
   <form id="form1" runat="server">
      <div>
          <asp:Table ID="Table1" runat="server">
           </asp:Table>
      </div>
      <div>
           <asp:Button ID="btnExport" onclick="btnExport_Click" Text="Export" runat="server">
      </div>
   </form>
</body>

aspx.cs (代码隐藏)

代码语言:javascript
复制
    protected void Page_Load(object sender, EventArgs e)
    {
        TableRow tr = new TableRow();
        TableCell tcel = new TableCell();
        tcel.Text = "id";
        tr.Cells.Add(tcel);

        TableCell tcel1 = new TableCell();
        tcel1.Text = "id1";
        tr.Cells.Add(tcel1);

        Table1.Rows.Add(tr);
    }

    protected void btn_Click(object sender, EventArgs e)
    {
        string filename = "ExportExcel.xls";
        System.IO.StringWriter tw = new System.IO.StringWriter();
        System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);

        //Get the HTML for the control.             
        Table1.RenderControl(hw);
        //Write the HTML back to the browser.
        //Response.ContentType = application/vnd.ms-excel;
        Response.ContentType = "application/vnd.ms-excel";
        Response.AppendHeader("Content-Disposition", "attachment; filename=" + filename + "");
        this.EnableViewState = false;
        Response.Write(tw.ToString());
        Response.End();
     }
票数 1
EN

Stack Overflow用户

发布于 2013-05-21 17:57:46

首先要说的是,您尝试做的不是导出到excel,而是您发送了一个带有错误标题的html,以诱使浏览器使用excel打开此内容。

这个解决方案有很多问题,excel it self会警告用户内容与扩展名不同,因为您发送的html和您的响应头都显示这是一个excel文件。我敢打赌,客户端上的一些反恶意软件或服务器上的类似软件将阻止此响应,因为提供不同于标头中声明的内容是已知的恶意软件行为。

使用专门的excel库要好得多,也更容易,例如EPPlus,在这里查找将DataTable导出到真正的excel文件的ASP.NET ashx处理程序:

https://stackoverflow.com/a/9569827/351383

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16664793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档