ch laksmi Ответов: 0

Как открыть файл формата. xlsx в windows 2007 в ASP.NET


В моем веб-приложении у меня есть представление сетки и элемент управления диаграммой, который мне нужно экспортировать в excel. У меня есть только OpenOffice.Я экспортировал в формате. xlsx в excel, но мне нужно открыть в excel 2007, он не открыт, я попробовал какой-то код в моей системе и скачал документ, который я пытался открыть в системе windows 2007, но он не был открыт.
Это мой код без модифицированного кода, и я нашел кое-что, где этот код находится ниже, и как я могу установить свой код, у меня есть два элемента управления для экспорта, в моем основанном коде есть только один элемент управления, экспортированный.

Пожалуйста, скажите мне, как это сделать.
Спасибо

Что я уже пробовал:

string tmpChartName = "test2.jpg";
    protected void btnExport_Click(object sender, EventArgs e)
    {   
        string imgPath2 = Request.Url.GetLeftPart(UriPartial.Authority) + VirtualPathUtility.ToAbsolute("~/" + tmpChartName);
        Response.ClearContent();
        Response.Buffer = true;
        Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", "MediCountReport.xlsx"));      
        Response.ContentType = " application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
        StringWriter sw = new StringWriter();
        HtmlTextWriter htw = new HtmlTextWriter(sw);      
      string header = @"<table><tbody><tr><td></td></tr></tbody></table>";
      Response.Write(header);
      Response.Cache.SetCacheability(HttpCacheability.NoCache);  
        GridView1.AllowPaging = false;
        BindGraph();      
        GridView1.HeaderRow.Style.Add("background-color", "#F5FFFA");      
        for (int i = 0; i < GridView1.HeaderRow.Cells.Count; i++)
        {
            GridView1.HeaderRow.Cells[i].Style.Add("background-color", "#DCDCDC");
        }
        GridView1.RenderControl(htw); 
        Response.Write(sw.ToString());        
        Response.End();
    }

Я нашел ниже код
protected void bttnExportXL_Click(object sender, EventArgs e)
    {
       gridViewMaster.AllowPaging = false;
       gridViewMaster.AllowSorting = false;
        Response.Clear();

        //Response.AddHeader("content-disposition", "attachment;filename=Report_"+ DateTime.Now.ToShortDateString() +".xlsx");
        Response.AddHeader("content-disposition", "attachment;filename=Report.xlsx");
        Response.Charset = "";

        // If you want the option to open the Excel file without saving than
        // comment out the line below
        // Response.Cache.SetCacheability(HttpCacheability.NoCache);
        Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";

        //Response.ContentType = "application/vnd.xls";
        
        System.IO.StringWriter stringWrite = new System.IO.StringWriter();
        System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);

        foreach (GridViewRow r in gridViewMaster.Rows)
        {
            if (r.RowType == DataControlRowType.DataRow)
            {
                for (int columnIndex = 0; columnIndex < r.Cells.Count; columnIndex++)
                {
                    r.Cells[columnIndex].Attributes.Add("class", "text");
                }
            }
        }
        
        gridViewMaster.RenderControl(htmlWrite);
        
        string style = @"<style> .text { mso-number-format:\@; }  ";
        Response.Write(style);
      
        Response.Write(stringWrite.ToString());
        Response.End();
        
    }


Спасибо

Sinisa Hajnal

В то время как более новая версия обычно может открывать файлы старой версии, обратное не верно. Вы должны попробовать открыть файл в Excel 2007, он сообщит вам, поддерживается ли новый формат файла. Если нет, то вам нужно сохранить файл в более старом формате.

Richard Deeming

Вы НЕ экспорт файла Excel.

Вы отправляете обратно некоторый HTML-код вместе с заголовком, который "лежит" в браузере и сообщает ему, что ответ-это документ Excel.

Затем Excel делает все возможное, чтобы интерпретировать этот HTML-код как лист Excel, но результаты могут отличаться. Другие приложения электронных таблиц могут или не могут импортировать возвращаемый вами HTML-код.

Вероятно, Вам повезет больше, если вы используете библиотеку, которая генерирует настоящий файл Excel. Например:
* EPPlus[^];
* ClosedXML[^];
* SDK OpenXML[^];

0 Ответов