Странное сообщение при открытии файла
От: TheAteist  
Дата: 06.10.10 20:16
Оценка:
Когда я сохраняю файл полученный от 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;
            }
        }
    }
}
Re: Странное сообщение при открытии файла
От: vmpire Россия  
Дата: 06.10.10 21:02
Оценка:
Здравствуйте, 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.
Re[2]: Странное сообщение при открытии файла
От: TheAteist  
Дата: 06.10.10 21:14
Оценка:
Здравствуйте, 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.

как надо подправить код, чтоб убрать это сообщение?
Re[3]: Странное сообщение при открытии файла
От: vmpire Россия  
Дата: 06.10.10 22:11
Оценка:
Здравствуйте, 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, но все равно пишет то сообщение.
А>Что делать?

Попробуйте
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Re[6]: Странное сообщение при открытии файла
От: TheAteist  
Дата: 08.10.10 13:22
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Попробуйте

А>Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";

Не помогло.
Можно мне написать маленький рабочий пример где файл откроется нормально без предупреждений в MS Excel 2003/5/7?
Буду очень благодарен

Спасибо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.