Comment ouvrir un fichier RTF avec C # sans montrer la boîte de dialogue Microsoft Word "Convertir Fichier"?

StackOverflow https://stackoverflow.com/questions/5016484

Question

question

Je souhaite ouvrir programmation un fichier RTF dans Microsoft Word à l'aide de C #. Mais je ne veux pas obtenir la boîte de dialogue "Convertir le fichier" tout en faisant cela. Comment puis-je faire ça?

code

J'ai essayé ce morceau de code, mais il affiche toujours la boîte de dialogue "Convertir le fichier" de Word.

object missing = Missing.Value;
string fileName = @"C:\RtfFile.rtf";
//object encoding = WdSaveFormat.wdFormatRTF;
object encoding = Microsoft.Office.Core.MsoEncoding.msoEncodingUTF8;
object noEncodingDialog = true; // http://msdn.microsoft.com/en-us/library/bb216319(office.12).aspx
word.Documents.Open(ref fullFilePath, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref encoding, ref missing, ref missing, ref missing, ref noEncodingDialog, ref missing);

Entrez la description de l'image ici

ce que j'ai essayé jusqu'à présent

En réalité, il y a deux sous-questions.

D'une part, je ne suis pas sûr du codage à utiliser. J'ai essayé les deux options affichées dans le code de code et vérifié Wikipedia pour le codage du caractère RTF .

D'autre part, object noEncodingDialog = true ne semble pas fonctionner car la boîte de dialogue "Convertir Fichier" continue de sauter (probablement parce que le codage est défini à tort).

Des idées?

versions

  • Word 2003
  • .NET 3.5
  • Visual Studio 2010 Ultimate

    code source complet

    Juste au cas où vous voulez l'essayer.

    Ajouter une référence à "Bibliothèque d'objets Microsoft Word 11.0" à partir de l'onglet "COM".

    using System;
    using System.Reflection;
    using System.Runtime.InteropServices;
    using Microsoft.Office.Interop.Word;
    
    namespace WordAutomationDemo
    {
        public class Program
        {
            static void Main(string[] args)
            {
                new Program();
                Console.ReadKey();
            }
    
            public Program()
            {
                object wordObject = null;
                try
                {
                    wordObject = Marshal.GetActiveObject("Word.Application");
                }
                catch (Exception)
                {
                    // Do nothing.
                }
    
                Application word = null;
                bool wordInstanceCreated = false;
                if (wordObject != null)
                {
                    word = (Application)wordObject;
                }
                else
                {
                    wordInstanceCreated = true;
                    word = new Application();
                }
    
                word.Visible = true;
    
                object missing = Missing.Value;
                object fullFilePath = @"C:\RtfFile.rtf";
                //object encoding = WdSaveFormat.wdFormatRTF; // http://msdn.microsoft.com/en-us/library/microsoft.office.tools.word.document.saveas(v=vs.80).aspx
                object encoding = Microsoft.Office.Core.MsoEncoding.msoEncodingUTF8;
                object noEncodingDialog = true; // http://msdn.microsoft.com/en-us/library/bb216319(office.12).aspx
                word.Documents.Open(ref fullFilePath, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref encoding, ref missing, ref missing, ref missing, ref noEncodingDialog, ref missing);
    
                //if (wordInstanceCreated)
                //{
                //    word.Quit();
                //}
            }
        }
    }
    

Était-ce utile?

La solution

According the documentation of the Open method, the second argument (ConfirmConversions) can specify to disable the document conversion. Combining it with the (ReadOnly argument) and it should solve your problem.

bool f = false;
bool t = true;
word.Documents.Open(ref fullFilePath, ref t, ref f, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref encoding, ref missing, ref missing, ref missing, ref noEncodingDialog, ref missing);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top