gpt4 book ai didi

c# - 如何使用 C# 打开 RTF 文件而不显示 Microsoft Word "Convert File"对话框?

转载 作者:行者123 更新时间:2023-12-01 23:34:08 33 4
gpt4 key购买 nike

问题

我想使用 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);

enter image description here

到目前为止我已经尝试过

实际上,有两个子问题。

一方面,我不确定使用哪种编码。我已经尝试了代码片段中显示的两个选项并检查了 Wikipedia for RTF character encoding .

另一方面,object noEncodingDialog = true 似乎不起作用,因为“转换文件”对话框不断弹出(可能是因为编码设置错误)。

有什么想法吗?

版本

  • Word 2003
  • .NET 3.5
  • Visual Studio 2010 旗舰版

完整源代码

以防万一您想尝试一下。

从“COM”选项卡添加对“Microsoft Word 11.0 对象库”的引用。

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();
//}
}
}
}

最佳答案

根据 Open method 的文档,第二个参数 (ConfirmConversions) 可以指定禁用文档转换。将它与 (ReadOnly 参数) 结合起来,它应该可以解决您的问题。

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);

关于c# - 如何使用 C# 打开 RTF 文件而不显示 Microsoft Word "Convert File"对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5016484/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com