Когда я сохраняю файл полученный от HANDLERа и пытаюсь отрыть его, то получаю вот такое предупреждение: "The file you trying to open, 'Users.xls', is in a different format than specified by the file extension. Verify that the file is not corrupt and is from a trusted source before opening the file. Do you want to open the file now?"
В чем проблема?
Большое спасибо
Вот код Handler:
using System.Web;
using System.Web.Services;
using System.IO;
using System.Data;
using System.Web.UI.WebControls;
using System.Web.UI;
using System.Text;
namespace WebApplication1
{
public class Handler2 : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
DataTable dt = new DataTable();
GridView gv = new GridView();
dt.Columns.Add("FirstName");
dt.Columns.Add("LastName");
dt.Columns.Add("Email");
dt.Columns.Add("Phone");
DataRow dr = dt.NewRow();
dr["FirstName"] = "f";
dr["LastName"] = "l";
dr["Email"] = "e";
dr["Phone"] = "p";
dt.Rows.Add(dr);
gv.DataSource = dt;
ExportGridToExcel(gv, "Users.xls", context);
}
private void ExportGridToExcel(GridView grid, string filename, HttpContext context)
{
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
grid.AllowPaging = false;
grid.AllowSorting = false;
grid.DataBind();
context.Response.Clear();
context.Response.AddHeader("content-disposition", "attachment; filename=" + filename);
context.Response.ContentType = "application/vnd.ms-excel";
context.Response.ContentEncoding = Encoding.Unicode;
context.Response.Charset = string.Empty;
context.Response.BinaryWrite(Encoding.Unicode.GetPreamble());
grid.RenderControl(htw);
context.Response.Write(sw.ToString());
context.Response.End();
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
Здравствуйте, TheAteist, Вы писали:
TA>Когда я сохраняю файл полученный от HANDLERа и пытаюсь отрыть его, то получаю вот такое предупреждение: TA>"The file you trying to open, 'Users.xls', is in a different format than specified by the file extension. Verify that the file is not corrupt and is from a trusted source before opening the file. Do you want to open the file now?" TA>В чем проблема?
В том, что в MIME у Вас сказано, что это формат Excel, а на самом деле там вовсе даже HTML.
Здравствуйте, vmpire, Вы писали:
V>Здравствуйте, TheAteist, Вы писали:
TA>>Когда я сохраняю файл полученный от HANDLERа и пытаюсь отрыть его, то получаю вот такое предупреждение: TA>>"The file you trying to open, 'Users.xls', is in a different format than specified by the file extension. Verify that the file is not corrupt and is from a trusted source before opening the file. Do you want to open the file now?" TA>>В чем проблема?
V>В том, что в MIME у Вас сказано, что это формат Excel, а на самом деле там вовсе даже HTML.
как надо подправить код, чтоб убрать это сообщение?
Здравствуйте, TheAteist, Вы писали:
TA>>>Когда я сохраняю файл полученный от HANDLERа и пытаюсь отрыть его, то получаю вот такое предупреждение: TA>>>"The file you trying to open, 'Users.xls', is in a different format than specified by the file extension. Verify that the file is not corrupt and is from a trusted source before opening the file. Do you want to open the file now?" TA>>>В чем проблема?
V>>В том, что в MIME у Вас сказано, что это формат Excel, а на самом деле там вовсе даже HTML. TA>как надо подправить код, чтоб убрать это сообщение?
Записывать в формате Excel, естественно. Нарыть какую-нибудь подходящую библиотеку и использовать.
Эта проверка — фича Excel от неё просто так не уйти.
Ещё можно попробовать писать в формате CSV, если Вам этого достаточно.
Re[4]: Странное сообщение при открытии файла
От:
Аноним
Дата:
07.10.10 02:45
Оценка:
Как было абсолютно правильно сказано. V>>В том, что в MIME у Вас сказано, что это формат Excel, а на самом деле там вовсе даже HTML.
Еще можно генерить xml, писать соответственно .xml, Excel его отлично открывает ибо это http://msdn.microsoft.com/en-us/library/Aa140066
Но вот у меня потом проблема возникла, причем только в хроме. Он зараза вопит, про потенциальную опастность этого файла при передаче его с сайта. Он конечно прав, но вот меня это не устраивает(, как бы от этого сообщения избавиться. Никто не подскажет?
Вариант с переименовыванием расширения в xsl не предлагать, а то будет кричать эксель.
Re[4]: Странное сообщение при открытии файла
От:
Аноним
Дата:
07.10.10 13:40
Оценка:
Здравствуйте, vmpire, Вы писали:
V>Здравствуйте, TheAteist, Вы писали:
TA>>>>Когда я сохраняю файл полученный от HANDLERа и пытаюсь отрыть его, то получаю вот такое предупреждение: TA>>>>"The file you trying to open, 'Users.xls', is in a different format than specified by the file extension. Verify that the file is not corrupt and is from a trusted source before opening the file. Do you want to open the file now?" TA>>>>В чем проблема?
V>>>В том, что в MIME у Вас сказано, что это формат Excel, а на самом деле там вовсе даже HTML. TA>>как надо подправить код, чтоб убрать это сообщение? V>Записывать в формате Excel, естественно. Нарыть какую-нибудь подходящую библиотеку и использовать. V>Эта проверка — фича Excel от неё просто так не уйти. V>Ещё можно попробовать писать в формате CSV, если Вам этого достаточно.
Я скачал библиотеку DocumentFormat.OpenXml, но все равно пишет то сообщение.
Что делать?
вот код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.IO;
using DocumentFormat.OpenXml.Spreadsheet;
namespace WebApplication2
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Workbook book = new Workbook();
Worksheet sheet = new Worksheet();
Cell cell = new Cell();
cell.CellValue = new CellValue("test");
Row row = new Row();
row.Append(cell);
sheet.Append(row);
book.Append(sheet);
Response.Clear();
Response.AddHeader("content-disposition", "attachment; filename=test.xls");
Response.ContentType = "application/vnd.ms-excel";
book.Save(Response.OutputStream);
}
}
}
Re[5]: Странное сообщение при открытии файла
От:
Аноним
Дата:
07.10.10 14:02
Оценка:
Здравствуйте, Аноним, Вы писали:
TA>>>>>Когда я сохраняю файл полученный от HANDLERа и пытаюсь отрыть его, то получаю вот такое предупреждение: TA>>>>>"The file you trying to open, 'Users.xls', is in a different format than specified by the file extension. Verify that the file is not corrupt and is from a trusted source before opening the file. Do you want to open the file now?" TA>>>>>В чем проблема?
V>>>>В том, что в MIME у Вас сказано, что это формат Excel, а на самом деле там вовсе даже HTML. TA>>>как надо подправить код, чтоб убрать это сообщение? V>>Записывать в формате Excel, естественно. Нарыть какую-нибудь подходящую библиотеку и использовать. V>>Эта проверка — фича Excel от неё просто так не уйти. V>>Ещё можно попробовать писать в формате CSV, если Вам этого достаточно. А>Я скачал библиотеку DocumentFormat.OpenXml, но все равно пишет то сообщение. А>Что делать?