2014-02-07 2 views
1

Как получить конкретную страницу из слова в приложении C# .net console?Получение определенной страницы из Word

Я пробовал,

Но, к сожалению, у меня ошибка из моего приложения.

Ниже мой код:

{ 
object what = WdGoToItem.wdGoToPage; 

object which = WdGoToDirection.wdGoToFirst; 

object count = 0; 

const string fileName = @"C:\..\..\test.doc"; 

object fileNameAsObject = fileName; 

Application wordApplication = new Application(); 

object readOnly = false; 

object missing = System.Reflection.Missing.Value; 

wordApplication.Documents.Open(ref fileNameAsObject, ref missing, ref readOnly, ref missing, 
ref missing, ref missing, ref missing, ref missing, 
ref missing, ref missing, ref missing, ref missing, 
ref missing, ref missing, ref missing, ref missing); 

// here on this following line I have got error "This method or property is not available because this command is not available for reading." 
Range startRange = wordApplication.Selection.GoTo(ref what, ref which, ref count, ref missing); 


object count2 = (int)count + 1; 

Range endRange = wordApplication.Selection.GoTo(ref what, ref which, ref count2, ref missing); 



endRange.SetRange(startRange.Start, endRange.End); 
endRange.Select(); 

; 
} 

Поэтому, пожалуйста, предоставить мне какое-либо решение по нему .. Заранее спасибо ..

+0

Пожалуйста, приведите как можно более подробную информацию об ошибке – Coops

+0

Также, какую технологию вы используете здесь? Есть такие, как [Open XML SDK 2.5 для Microsoft Office] (http://www.microsoft.com/en-gb/download/details.aspx?id=30425) – Coops

ответ

0

После первого вызвать приложение Word, все еще блокирует документ. Поэтому документ читается только. процесс убить WINWORD.EXE, а затем изменить код:

Document document = wordApplication.Documents.Open(ref fileNameAsObject, ref missing, ref readOnly, ref missing, 
                  ref missing, ref missing, ref missing, ref missing, 
                  ref missing, ref missing, ref missing, ref missing, 
                  ref missing, ref missing, ref missing, ref missing); 

После работы близко документа:

document.Close(); 
wordApplication.Quit(); 

После модификации рабочего кода:

 object what = WdGoToItem.wdGoToPage; 

     object which = WdGoToDirection.wdGoToFirst; 

     object count = 0; 

     const string fileName = @"C:\..\..\test.doc"; 

     object fileNameAsObject = fileName; 

     Application wordApplication = new Application(); 

     object readOnly = false; 

     object missing = System.Reflection.Missing.Value; 

     wordApplication.Documents.Open(ref fileNameAsObject, ref missing, ref readOnly, ref missing, 
                  ref missing, ref missing, ref missing, ref missing, 
                  ref missing, ref missing, ref missing, ref missing, 
                  ref missing, ref missing, ref missing, ref missing); 

     // here on this following line I have got error "This method or property is not available because this command is not available for reading." 
     Range startRange = wordApplication.Selection.GoTo(ref what, ref which, ref count, ref missing); 


     object count2 = (int)count + 1; 

     Range endRange = wordApplication.Selection.GoTo(ref what, ref which, ref count2, ref missing); 



     endRange.SetRange(startRange.Start, endRange.End); 
     endRange.Select(); 

     wordApplication.Documents.Close(); 
     wordApplication.Quit(); 
+0

По-прежнему он дает ту же ошибку ... –

+0

Are вы убиваете процесс WINWORD.EXE раньше? – neodim

+0

Как это будет работать? На самом деле я впервые услышал это убить WINWORD.EXE. И когда он будет запущен и как? –

0

Если вы можете я хотел бы использовать Open XML SDK 2.5 for Microsoft Office

Это дает вам полный доступ к документу a и, на мой взгляд, наиболее вероятно работать и не иметь проблем с памятью.

5

Вы используете Office 2013? Мы столкнулись с проблемой с тем же сообщением об ошибке при запуске нашего кода взаимодействия с недавно установленным Office 2013. Кажется, это связано с «Режимом чтения» Office 2013 по умолчанию, как упомянуто here.

Попробуйте отключить режим чтения, установив Application.ActiveWindow.View.ReadingLayout на false (как указано в комментариях к статье). Этот вызов должен быть выполнен после того, как вы открыли документ. В противном случае вызов завершится с сообщением: System.Runtime.InteropServices.COMException : This command is not available because no document is open.

+0

Работал для меня. Спасибо, сэр! –

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