Куда делся графический интерфейс? - PullRequest
0 голосов
/ 08 декабря 2011

У меня есть простая страница ASPX, которая отображает динамически сгенерированную таблицу HTML в Excel. Это работает, но, как вы можете видеть на скриншоте , по какой-то причине открытие книги приводит к тому, что экземпляр Excel не имеет графического интерфейса, кроме как на панели формул и на вкладках листа внизу. Это не может быть легко закрыто или завершено, и, кажется, замедляет мою рабочую станцию.

Я использую этот код для построения и экспорта таблицы.

        runReport2();//Builds the table - this bit is fine.

        Response.Clear();
        Response.Charset = "";
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.ContentType = "application/vnd.ms-excel";
        Response.AddHeader("content-disposition", "attachment;filemename=" + "FleetReport.xls");

        System.IO.StringWriter sw = new System.IO.StringWriter(); 
        HtmlTextWriter hw = new HtmlTextWriter(sw);

        this.tblReport.RenderControl(hw);
        System.Text.StringBuilder sb1 = new System.Text.StringBuilder();

        sb1.Append(sw.ToString() );
        sw = null;
        hw = null;
        Response.Write(sb1.ToString());
        sb1.Remove(0, sb1.Length);
        Response.Flush();
        Response.End();

Можете ли вы подсказать, что я могу делать не так? Я делаю это разумным способом или я должен вместо этого отправлять CSV в Excel?

1 Ответ

1 голос
/ 08 декабря 2011

Попробуйте вот так

        HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.AddHeader("content-disposition", string.Format("attachment; Filename = FleetReport.xls"));
        Response.Charset = "";
        Response.Cache.SetCacheability(HttpCacheability.NoCache);
        HttpContext.Current.Response.ContentType = "application/ms-excel";
        StringWriter sw = new StringWriter();
        HtmlTextWriter hw = new HtmlTextWriter(sw);
        this.tblReport.RenderControl(hw);
        Response.Write(sw.ToString());
        Response.End();
...