2013-06-07 3 views
0

У меня есть документ Word 8.0, который хранится как .bin-файл, который я пытаюсь открыть в MS Word с помощью C# и Microsoft.Office.Interop. Я могу получить документ, чтобы открыть и отобразить содержимое, однако он не применяется какой-либо из стилей документа (например, размер шрифта, подчеркивание и т.д.)Открытие .bin-файла с Office.Interop.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 

т.д.

Любые мысли?

+0

У вас есть идея, что этот формат .bin на самом деле? Это не один из стандартных типов. Что делать, если вы открываете его вручную в Word? Это файл .bin в файле .docx (.zip)? –

+0

@bibadiak Когда я открываю файл .bin в Word вручную, это содержимое «FileName.doc», а затем говорит «Word.Document.8 Embedded», чем отображает содержимое файла .doc, как тогда сказано, например, Heading1 Heading2 Normal Normal Footer и т. д. - Надеюсь, что поможет прояснить некоторые вещи – mint

+0

Не знаю, какой формат, извините. Если вы можете разместить один из своих .bin-файлов где-нибудь, мы могли бы посмотреть на него, я посмотрю. –

ответ

1

Я вижу, что вы устанавливаете объект documentFormat, но не видите, что используете его в качестве параметра для своего вызова в Documents.Open.

Учитывая расширение файла .bin, может быть, что Word пытается определить формат документа с отсутствием этого параметра?

+0

Хорошая точка. Когда я пытаюсь «wdOpenFormatDocument97», это дает мне ошибку при попытке вызвать .Открыть: Word не смог прочитать этот документ. Он может быть поврежден. Попробуйте выполнить одно из следующих действий: * Открыть и восстановить файл. – mint

+0

Не уверен, что это улучшение :-) Тем не менее вы должны обновить код своего вопроса, чтобы другие не нашли ту же проблему. –

1

Как заметил Спайсер @ Крис, так как вы установили 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); 
+0

Отличная точка, спасибо за исправление. К сожалению, все еще есть те же проблемы – mint

+0

@mint Вы пробовали другие fileFormat? Вместо этого попробуйте использовать 'wdOpenFormatAllWord'. Из MSDN: wdOpenFormatAllWord Формат Microsoft Word, который обратно совместим с более ранними версиями Microsoft Word. – Chris

Смежные вопросы