【问题标题】:Export to excel directly to .xls not to html直接导出到excel到.xls而不是html
【发布时间】:2015-01-29 15:24:42
【问题描述】:

以下是导出到我的 GridView 的 Excel 格式但格式化 HTML 的代码。导出后,我需要将此文件导入仅接受原始 .xls 文件的系统。是否可以将gridview直接保存为原始.xls格式?

protected void Btn_Excel_Click(object sender, EventArgs e)
{
        string kodowanie = "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />";
        Response.ContentEncoding = System.Text.Encoding.UTF8;//aby widział polskie znaki
        Response.Clear();
        Response.Buffer = true;
        Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
        Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", "ImportWZ" + DateTime.Now.ToString() + ".xls"));
        Response.Charset = "";
        this.EnableViewState = false;
        System.IO.StringWriter sw = new System.IO.StringWriter();
        System.Web.UI.HtmlTextWriter htw = new System.Web.UI.HtmlTextWriter(sw);


        if (ViewState["CheckBoxArray"] != null)
        {
            ArrayList CheckBoxArray = (ArrayList)ViewState["CheckBoxArray"];
            string checkAllIndex = "chkAll-" + GridView1.PageIndex;
            int rowIdx = 0;
            for (int i = 0; i < GridView1.Rows.Count; i++)
            {
                GridViewRow row = GridView1.Rows[i];
                row.Visible = false;

                if (row.RowType == DataControlRowType.DataRow)
                {
                    if (CheckBoxArray.IndexOf(i + 1) != -1)
                    {
                        row.Visible = true;
                        row.BackColor = System.Drawing.Color.White;
                        row.Cells[0].Visible = false;
                        row.Attributes.Add("class", "textmode");

                        rowIdx++;
                    }
                }
            }
        }

        GridView1.HeaderRow.Style.Add("background-color", "#003389");
        GridView1.HeaderRow.Style.Add("color", "white");
        GridView1.RenderControl(htw);
        Response.Write(kodowanie+sw.ToString());
        Response.End();

}
public override void VerifyRenderingInServerForm(System.Web.UI.Control control)
{

}

【问题讨论】:

  • EPPLUS 可以导出到 xlsx
  • 它是否接受 Open Office 电子表格/Excel 2007 (.xlsx) 文件?
  • 不,我说的更多。他们只接受旧的 .xls (97-2003) 格式。
  • 您应该做的第一件事是对他们大喊大叫,因为他们不接受 .xlsx 文件。告诉他们不聪明,然后将他们指向使 Excel 2003 能够打开 .xlsx 文件的compatibility pack。然后,如果他们绝对不会接受 .xlsx 文件,那就再对他们大喊大叫。然后你需要找到一个转换器程序,或者 gasp 在服务器上使用 Office 互操作,微软强烈建议不要这样做,这会让你很头疼。老实说,如果我是你,我会拒绝支持 .xls。
  • 另一种解决方法可能是将文件另存为 HTML,但为其提供 .xls 扩展名,但每次打开文件时 Excel 都会抱怨它可能已损坏(但会停止打开它)。但是,您在如何设计它方面非常有限。而且我不会通过将 GridView 呈现为字符串来做到这一点。相反,我会使用 Razor Engine 或手动构建 HTML 字符串,这样您就可以完全控制生成的 HTML。

标签: c# asp.net excel gridview


【解决方案1】:

您必须使用支持 xls 文件的 Excel 库,例如 EasyXLS

如果您决定使用 EasyXLS,请查看他们关于 exporting GridView to Excel in C# 的代码示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-19
    • 2013-08-16
    • 1970-01-01
    相关资源
    最近更新 更多