Как открыть файл формата. 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[^];