Ir para conteúdo
Fórum Script Brasil
  • 0

Salvando um documento Word pela aplicação C#


Rubiz Gardini

Pergunta

Olá pessoal, td bem com vocês?

Precisei trabalhar com o VS 2008, .Net 2.0, junto com o Word (Office 2003) para substituir certas palavras em um arquivo Word.

Meu código está assim:

//namespaces
using Microsoft.Office.Core;
using Word = Microsoft.Office.Interop.Word;
using System.ComponentModel;
using System.Drawing;

protected void btn_contrato_Click(object sender, EventArgs e)
    {
        object missing = System.Reflection.Missing.Value;

        //Abre a aplicação Word e faz uma cópia do documento mapeado
        Word.Application oApp = new Word.Application();

        object template = Page.MapPath("~/Page/_Contratos/Teste.doc");
        Word.Document oDoc = oApp.Documents.Add(ref template, ref missing, ref missing, ref missing);

        this.Substitui(oDoc, "@Nome", "William");
        this.Substitui(oDoc, "@Sobrenome", "Crudeli");
        this.Substitui(oDoc, "@Idade", "40 e alguma coisa");

        oApp.PrintOut();
    }

    protected void Substitui(Word.Document oDoc, object parametro, object texto)
    {
        object missing = System.Reflection.Missing.Value;

        //Troca o conteúdo de alguns tags
        Word.Range oRng = oDoc.Range(ref missing, ref missing);

        object FindText = parametro;
        object ReplaceWith = texto;
        object MatchWholeWord = true;
        object Forward = false;

        oRng.Find.Execute(ref FindText, ref missing, ref MatchWholeWord, ref missing, ref missing, ref missing, ref Forward,
        ref missing, ref missing, ref ReplaceWith, ref missing, ref missing, ref missing, ref missing, ref missing);
    }

O que esou precisando agora, é dar um "Salvar como" nesse Word que está aberto e sendo usado, para um sub diretório dentro da pasta onde ele está

Não estou achando informação na internet de como fazer isso, alguém sabe como fazer isso??

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Eu encontrei mesmo quintelab, mas tem umas coisinhas pequenas q tive q perder muito tempo pra sacar sozinha.

No fim esse link me ajudou muito:

protected void btn_contrato_Click(object sender, EventArgs e)

{

object missing = System.Reflection.Missing.Value;

//Abre a aplicação Word e faz uma cópia do documento mapeado

Word.Application oApp = new Word.Application();

object template = Page.MapPath("~/Page/_Contratos/Teste.doc");

Word.Document oDoc = oApp.Documents.Add(ref template, ref missing, ref missing, ref missing);

this.Substitui(oDoc, "@Nome", "William");

this.Substitui(oDoc, "@Sobrenome", "Crudeli");

this.Substitui(oDoc, "@Idade", "40 e alguma coisa");

this.SalvarDocumento(oDoc);

this.ImprimirDocumento(oApp, oDoc);

}

protected void Substitui(Word.Document oDoc, object parametro, object texto)

{

object missing = System.Reflection.Missing.Value;

//Troca o conteúdo de alguns tags

Word.Range oRng = oDoc.Range(ref missing, ref missing);

object FindText = parametro;

object ReplaceWith = texto;

object MatchWholeWord = true;

object Forward = false;

oRng.Find.Execute(ref FindText, ref missing, ref MatchWholeWord, ref missing, ref missing, ref missing, ref Forward,

ref missing, ref missing, ref ReplaceWith, ref missing, ref missing, ref missing, ref missing, ref missing);

}

private void SalvarDocumento(Word.Document oDoc)

{

object missing = System.Reflection.Missing.Value;

object FileName = Page.MapPath("~/Page/_Contratos/Gerados/Teste3.doc");

object FileFormat = Word.WdSaveFormat.wdFormatDocument;

object LockComments = false;

object AddToRecentFiles = true;

object ReadOnlyRecommended = false;

object EmbedTrueTypeFonts = false;

object SaveNativePictureFormat = true;

object SaveFormsData = true;

object SaveAsAOCELetter = false;

object Encoding = missing;

object InsertLineBreaks = false;

object AllowSubstitutions = true;

object LineEnding = Word.WdLineEndingType.wdCRLF;

object AddBiDiMarks = false;

try

{

oDoc.SaveAs(ref FileName, ref FileFormat, ref LockComments, ref missing, ref AddToRecentFiles, ref missing,

ref ReadOnlyRecommended, ref EmbedTrueTypeFonts, ref SaveNativePictureFormat, ref SaveFormsData,

ref SaveAsAOCELetter, ref Encoding, ref InsertLineBreaks, ref AllowSubstitutions, ref LineEnding, ref AddBiDiMarks);

}

catch

{

ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alert", "alert('O documento não pode ser salvo.');", true);

}

}

private void ImprimirDocumento(Word.Application oApp, Word.Document oDoc)

{

object missing = System.Reflection.Missing.Value;

object wdPrintAllDocument = Word.WdPrintOutRange.wdPrintAllDocument;

object wdPrintAutoTextEntries = Word.WdPrintOutItem.wdPrintDocumentContent;

object wdPrintAllPages = Word.WdPrintOutPages.wdPrintAllPages;

try

{

oApp.PrintOut(ref missing, ref missing, ref wdPrintAllDocument, ref missing, ref missing, ref missing, ref wdPrintAutoTextEntries,

ref missing, ref missing, ref wdPrintAllPages, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,

ref missing, ref missing, ref missing);

}

catch

{

ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alert", "alert('Houve algum erro na impressão.');", true);

}

finally

{

ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alert", "alert('Impressão feita com sucesso!');", true);

}

}

Código todo:

protected void btn_contrato_Click(object sender, EventArgs e)
    {
        object missing = System.Reflection.Missing.Value;

        //Abre a aplicação Word e faz uma cópia do documento mapeado
        Word.Application oApp = new Word.Application();

        object template = Page.MapPath("~/Page/_Contratos/Teste.doc");
        Word.Document oDoc = oApp.Documents.Add(ref template, ref missing, ref missing, ref missing);

        this.Substitui(oDoc, "@Nome", "William");
        this.Substitui(oDoc, "@Sobrenome", "Crudeli");
        this.Substitui(oDoc, "@Idade", "40 e alguma coisa");

        this.SalvarDocumento(oDoc);
        this.ImprimirDocumento(oApp, oDoc);
    }

    protected void Substitui(Word.Document oDoc, object parametro, object texto)
    {
        object missing = System.Reflection.Missing.Value;

        //Troca o conteúdo de alguns tags
        Word.Range oRng = oDoc.Range(ref missing, ref missing);

        object FindText = parametro;
        object ReplaceWith = texto;
        object MatchWholeWord = true;
        object Forward = false;

        oRng.Find.Execute(ref FindText, ref missing, ref MatchWholeWord, ref missing, ref missing, ref missing, ref Forward,
        ref missing, ref missing, ref ReplaceWith, ref missing, ref missing, ref missing, ref missing, ref missing);
    }
    private void SalvarDocumento(Word.Document oDoc)
    {
        object missing = System.Reflection.Missing.Value;

        object FileName = Page.MapPath("~/Page/_Contratos/Gerados/Teste3.doc");
        object FileFormat = Word.WdSaveFormat.wdFormatDocument;
        object LockComments = false;
        object AddToRecentFiles = true;
        object ReadOnlyRecommended = false;
        object EmbedTrueTypeFonts = false;
        object SaveNativePictureFormat = true;
        object SaveFormsData = true;
        object SaveAsAOCELetter = false;
        object Encoding = missing;
        object InsertLineBreaks = false;
        object AllowSubstitutions = true;
        object LineEnding = Word.WdLineEndingType.wdCRLF;
        object AddBiDiMarks = false;

        try
        {
            oDoc.SaveAs(ref FileName, ref FileFormat, ref LockComments, ref missing, ref AddToRecentFiles, ref missing,
                ref ReadOnlyRecommended, ref EmbedTrueTypeFonts, ref SaveNativePictureFormat, ref SaveFormsData,
                ref SaveAsAOCELetter, ref Encoding, ref InsertLineBreaks, ref AllowSubstitutions, ref LineEnding, ref AddBiDiMarks);
        }
        catch
        {
            ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alert", "alert('O documento não pode ser salvo.');", true);
        }
    }
    private void ImprimirDocumento(Word.Application oApp, Word.Document oDoc)
    {
        object missing = System.Reflection.Missing.Value;
        object wdPrintAllDocument = Word.WdPrintOutRange.wdPrintAllDocument;
        object wdPrintAutoTextEntries = Word.WdPrintOutItem.wdPrintDocumentContent;
        object wdPrintAllPages = Word.WdPrintOutPages.wdPrintAllPages;

        try
        {
            oApp.PrintOut(ref missing, ref missing, ref wdPrintAllDocument, ref missing, ref missing, ref missing, ref wdPrintAutoTextEntries,
                ref missing, ref missing, ref wdPrintAllPages, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
                ref missing, ref missing, ref missing);
        }
        catch
        {
            ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alert", "alert('Houve algum erro na impressão.');", true);
        }
        finally
        {
            ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alert", "alert('Impressão feita com sucesso!');", true);
        }
    }

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...