0

我有一个存储为 .bin 文件的 Word 8.0 文档,我正在尝试使用 C# 和 Microsoft.Office.Interop 在 MS Word 中重新打开该文档。我可以让文档打开并显示内容,但是它不应用文档的任何样式(例如字体大小、下划线等)

我的代码如下:

object pathToBin = @"\\server\folder\123.bin";
object missingType = Type.Missing;
object readOnly = true;
object isVisible = false;
object documentFormat = WdOpenFormat.wdOpenFormatDocument97;

Application applicationclass = new Application();
applicationclass.Documents.Open(ref pathToBin,
                                ref readOnly,
                                ref missingType, ref missingType, ref missingType,
                                ref missingType, ref missingType, ref missingType,
                                ref missingType, ref missingType, ref isVisible,
                                ref missingType, ref missingType, ref missingType,
                                ref missingType, ref missingType);
applicationclass.Visible = true;
Document document = applicationclass.ActiveDocument;

当文档本身打开时,它似乎在字面上显示如下样式:

Heading 1
Heading 1
Heading 2
Heading 2
Heading 3
Heading 3
Hyperlink
Hyperlink

等等

有什么想法吗?

4

2 回答 2

1

我看到您设置了 documentFormat 对象,但没有看到您将它用作调用 Documents.Open 的参数。

鉴于文件扩展名为 .bin,难道 Word 正在努力找出缺少此参数的文档格式吗?

于 2013-06-07T15:33:02.467 回答
1

正如@Chris Spicer 所注意到的,既然你设置documentFormat了,你应该在调用时设置它applicationclass.Documents.Open......

...但还要确保在正确的位置设置正确的参数,因为它们实际上是移动的(你传递IsVisible参数Encoding!)。

Documents.Open方法

Document Open(
[In] ref object FileName,                              PathToBin OK
[In, Optional] ref object ConfirmConversions,          here you have readOnly!
[In, Optional] ref object ReadOnly,                    Missing
[In, Optional] ref object AddToRecentFiles,            Missing
[In, Optional] ref object PasswordDocument,            Missing
[In, Optional] ref object PasswordTemplate,            Missing
[In, Optional] ref object Revert,                      Missing
[In, Optional] ref object WritePasswordDocument,       Missing
[In, Optional] ref object WritePasswordTemplate,       Missing
[In, Optional] ref object Format,                      Missing
[In, Optional] ref object Encoding,                    here you have IsVisible!
[In, Optional] ref object Visible,                     Missing
[In, Optional] ref object OpenAndRepair,               Missing
[In, Optional] ref object DocumentDirection,           Missing
[In, Optional] ref object NoEncodingDialog,            Missing
[In, Optional] ref object XMLTransform                 Missing

所以这段代码:

applicationclass.Documents.Open(ref pathToBin,
                            ref readOnly,
                            ref missingType, ref missingType, ref missingType,
                            ref missingType, ref missingType, ref missingType,
                            ref missingType, ref missingType, ref isVisible,
                            ref missingType, ref missingType, ref missingType,
                            ref missingType, ref missingType);

应该:

applicationclass.Documents.Open(ref pathToBin,
                            ref missingType,
                            ref readOnly, ref missingType, ref missingType,
                            ref missingType, ref missingType, ref missingType,
                            ref missingType, ref documentFormat, ref missingType,
                            ref isVisible, ref missingType, ref missingType,
                            ref missingType, ref missingType);
于 2013-06-07T23:36:32.500 回答