none
Texto no RichTextBox transferir para Word através do Microsoft.Office.Interop.Word RRS feed

  • Pergunta

  • Meu problema é o seguinte tenho um form que você gera um orçamento em WORD, neste form recentemente  inseri um richtextbox onde você pode formatar o texto colocando em negrito, itálico, sublinhado etc...

    Porém quando o arquivo Word é gerado em tempo real as formatações feitas no RichTextBox não são transferidas para o Word, ficando somente o texto.

    (tb_dp.Text); é o meu RTF

    tentei cololocar tb_dp.Rtf e o texto no word ficou com os caracteres da formatação tipo /n exemplo.

    Alguém pode me ajudar?

    Fiz uma loga pesquisa na internet e achei muito pouco material creio que é algum detalhe que eu desconheço.

    private void gerar_word()
            {
                CultureInfo cultureInfo = new CultureInfo("pt-BR");
                DateTimeFormatInfo dateTimeFormat = cultureInfo.DateTimeFormat;
                int day = Convert.ToDateTime(this.tb_DataEmissão.Text).Day;
                int year = Convert.ToDateTime(this.tb_DataEmissão.Text).Year;
                int num1 = 0;
                string str1 = cultureInfo.TextInfo.ToTitleCase(dateTimeFormat.GetMonthName(Convert.ToDateTime(this.tb_DataEmissão.Text).Month));
                string str2 = cultureInfo.TextInfo.ToTitleCase(dateTimeFormat.GetDayName(DateTime.Now.DayOfWeek)) + (object)", " + day + " de " + str1 + " de " + year + ".";
                object obj = (object)Missing.Value;
                DataObject objeto = new DataObject(); objeto.SetData(DataFormats.Rtf, tb_dp.Rtf);
    
    
    
                _Application application = (_Application)Activator.CreateInstance(System.Type.GetTypeFromCLSID(new Guid("000209FF-0000-0000-C000-000000000046")));
                application.Visible = true;
                _Document document = (_Document)application.Documents.Add(ref obj, ref obj, ref obj, ref obj);
    
                application.ActiveDocument.ActiveWindow.ActivePane.View.SeekView = WdSeekView.wdSeekCurrentPageHeader;
                sisConexão sisConexão = new sisConexão();
                Shape shape = application.Selection.HeaderFooter.Shapes.AddPicture(sisConexão.logoPath, ref obj, ref obj, ref obj, ref obj, ref obj, ref obj, ref obj);
                shape.Select(ref obj);
                shape.Name = "CustomLogo";
                shape.Left = -999998f;
                shape.Height = 60f;
                shape.Width = 100f;
                shape.Top = -25f;
    
                application.ActiveWindow.Selection.TypeText("                                            Nome: " + this.tb_Vende.Text + "                        Telefone: " + this.tb_tel.Text);
                application.ActiveWindow.Selection.TypeText("\v");
                application.ActiveWindow.Selection.TypeText("                                            E-mail: " + this.tb_email.Text);
                application.ActiveWindow.ActivePane.View.SeekView = WdSeekView.wdSeekMainDocument;
                application.ActiveWindow.Selection.Font.Name = "Calibri (Corpo)";
                application.ActiveWindow.Selection.Font.Size = 12f;
    
    
                Paragraph paragraph9 = document.Content.Paragraphs.Add(ref obj);
                paragraph9.Range.Font.Bold = 0;
                paragraph9.Range.Text = (tb_dp.Text);
                paragraph9.Format.SpaceAfter = 0.0f;
                paragraph9.Range.InsertParagraphAfter();
    
    
    

    quarta-feira, 3 de agosto de 2016 13:14

Respostas

  • Bom dia Fernandess_1, tudo bom?

    Recentemente eu utilizei um algo semelhante ao código abaixo para converter .docx em .pdf. Talvez você possa fazer algo parecido convertendo de .rtf para .docx.

    var wordApp = new Microsoft.Office.Interop.Word.Application();
    var currentDoc = wordApp.Documents.Open(@"C:\TestDocument.rtf");
    currentDoc.SaveAs(@"C:\TestDocument", Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatDocumentDefault);
    currentDoc.Close();
    wordApp.Quit();

    Atenciosamente,

    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quinta-feira, 4 de agosto de 2016 12:35
    Moderador

Todas as Respostas

  • Bom dia Fernandess_1,

    Obrigado por sua participação no Fórum MSDN.

    Você já tentou utiliza o Método RichTextBox.SaveFile ?

    Talvez você possa salvar seu texto em um arquivo .rtf e logo converte-lo em .docx.

    Atenciosamente,


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quarta-feira, 3 de agosto de 2016 16:42
    Moderador
  • Boa tarde Robson,

    Na verdade eu possuo alguns campos de preenchimento, alguns em texbox e um richtextbox após o usuário preencher estes dados ele salva no banco SQL e gera um arquivo em Word instantaneamente, por isso não optei por este método RichTextBox.SaveFile, vi que existe alguns métodos de conversão de arquivo. Ou você tem alguma ideia de como fazer neste método ou me ajudar em outro método, vi que existe um método de copiar o richtextbox e colar, mas o conteúdo  é muito vago.

    quarta-feira, 3 de agosto de 2016 18:51
  • Bom dia Fernandess_1, tudo bom?

    Recentemente eu utilizei um algo semelhante ao código abaixo para converter .docx em .pdf. Talvez você possa fazer algo parecido convertendo de .rtf para .docx.

    var wordApp = new Microsoft.Office.Interop.Word.Application();
    var currentDoc = wordApp.Documents.Open(@"C:\TestDocument.rtf");
    currentDoc.SaveAs(@"C:\TestDocument", Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatDocumentDefault);
    currentDoc.Close();
    wordApp.Quit();

    Atenciosamente,

    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quinta-feira, 4 de agosto de 2016 12:35
    Moderador
  • Bom dia,

    Devido a falta de resposta do usuário

    essa thread está sendo fechada.

    Se o problema ainda estiver ocorrendo,

    favor abrir uma nova thread.

    Atenciosamente,


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    segunda-feira, 8 de agosto de 2016 12:35
    Moderador