Экспорт в word с именем файла, похоже, не работает
-
21-09-2019 - |
Вопрос
Я экспортирую datatable в Word, но когда я передаю имя файла, кажется, что он не получает имя файла в диалоговом окне "Открыть / сохранить".
Вот что я делаю
public static void Convertword(DataTable dt, HttpResponse Response,string filename)
{
try
{
Response.Clear();
Response.AddHeader("content-disposition", "attachment;filename=" + filename + ".doc");
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = "application/vnd.word";
System.IO.StringWriter stringWrite = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new System.Web.UI.HtmlTextWriter(stringWrite);
System.Web.UI.WebControls.GridView dg = new System.Web.UI.WebControls.GridView();
dg.DataSource = dt;
dg.DataBind();
dg.RenderControl(htmlWrite);
Response.Write(stringWrite.ToString());
Response.End();
}
catch(Exception err)
{
throw err;
}
}
Когда я передаю имя файла "report(" + System.DateTime.Now.ToString("dd/MM/yyyy");
+ ")"
он не принимает значение как дд/ММ/ГГГГ вместо этого он показывает имя файла как ДД_ММ_ЫЫЫЫЫ
Решение
Несколько замечаний о вашем коде:
- Вы устанавливаете заголовок типа содержимого для документа word, но на самом деле отправляете содержимое HTML путем отображения GridView
dd/MM/YYYY
не является допустимым именем файла из-за/
характер.- Тебе не нужен
try/catch
блокировать, если вcatch
утверждение, которое вы только делаетеthrow err
- Зовущий
Response.End
в конце этого делать не обязательно. - Всегда используйте
using
заявление при работе с одноразовыми объектами, такими как потоки и устройства чтения / записи, для обеспечения того, чтобыDispose
метод вызывается во всех случаях.
Другие советы
Вы должны использовать имя файла, подобное
String.Format("report{0:ddMMyyyy}.doc", DateTime.Now);
Имя файла не может содержать "/".
Это, скорее всего, потому, что /
недопустимый символ для имен файлов.Ваше имя должно соответствовать определенным критериям, убедитесь, что не используете ни один из
* . " / \ [ ] : ; | = ,
Если у вас есть косые черты в имени файла, я бы предположил, что это приведет к разрыву URL-адреса файла, и, следовательно, косые черты в какой-то момент заменяются?