Pergunta

Exporto um datatable para o Word, quando passo um nome de arquivo, ele não parece obter o nome do arquivo na caixa de diálogo Open/Salvar.

Aqui está o que estou fazendo

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;
    }
}

Quando eu passo o nome do arquivo "report(" + System.DateTime.Now.ToString("dd/MM/yyyy"); + ")" não leva o valor como dd/mm/AAA Em vez disso, mostra o nome do arquivo como dd_mm_yyyy

Foi útil?

Solução

Poucas observações sobre seu código:

  1. Você está definindo o cabeçalho do tipo de conteúdo para um documento do Word, mas está realmente enviando conteúdo HTML, renderizando uma Gridview
  2. dd/MM/YYYY não é um nome de arquivo válido por causa do / personagem.
  3. Você não precisa de um try/catch Bloco se no catch declaração que você está apenas fazendo throw err
  4. Chamando Response.End No final, não é necessário.
  5. Sempre use using declaração ao lidar com objetos descartáveis, como fluxos e leitores/escritores para garantir que o Dispose O método é chamado em todos os casos.

Outras dicas

Você deve usar um nome de arquivo como

String.Format("report{0:ddMMyyyy}.doc", DateTime.Now);

Um nome de arquivo não pode ter "/".

Isso é mais provável porque / não é um caractere válido para nomes de arquivos. Seu nome deve cumprir certos critérios, certifique -se de não usar nenhum dos

* . " / \ [ ] : ; | = ,

Se você tiver barras para a frente no nome do arquivo, eu presumiria que isso quebraria o URL no arquivo e, portanto, as barras estão sendo substituídas em algum momento?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top