【发布时间】:2015-02-25 08:41:15
【问题描述】:
问题
我想使用 C# 以编程方式在 Microsoft Word 中打开一个 RTF 文件。但我不想在这样做时得到“转换文件”对话框。我该怎么做?
代码
我试过这段代码,但它仍然显示 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);
到目前为止我已经尝试过什么
其实有两个子问题。
一方面,我不确定要使用哪种编码。我已经尝试了代码 sn-p 中显示的两个选项并检查了Wikipedia for RTF character encoding。
另一方面,object noEncodingDialog = true 似乎不起作用,因为“转换文件”对话框不断弹出(可能是因为编码设置错误)。
有什么想法吗?
版本
- 字 2003
- .NET 3.5
- Visual Studio 2010 Ultimate
完整源代码
以防万一您想尝试一下。
从“COM”选项卡中添加对“Microsoft Word 11.0 Object Library”的引用。
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();
//}
}
}
}
【问题讨论】:
标签: c# ms-word rtf word-automation