Вопрос
Я хочу программно открыть файл RTF в Microsoft Word, используя C #.Но я не хочу получать диалог «Преобразовать файл» при этом.Как мне это сделать?
Код
Я пробовал этот фрагмент кода, но он по-прежнему показывает диалог 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);
То, что я пробовал до сих пор
На самом деле есть два подвопроса.
С одной стороны,Я не уверен, какую кодировку использовать.Я попробовал оба варианта, показанные во фрагменте кода, и проверил Википедию для кодировки символов RTF .
С другой стороны, object noEncodingDialog = true
, похоже, не работает, так как "Преобразовать файл""Диалоговое окно продолжает появляться (возможно, потому что кодировка установлена неправильно).
Есть идеи?
Версии
- Word 2003
- .NET 3.5
- Visual Studio 2010 Ultimate
Полный исходный код
На всякий случай, если вы захотите попробовать его.
Добавить ссылку на «Библиотеку объектов Microsoft Word 11.0» на вкладке «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();
//}
}
}
}