powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / C# и Microsoft.Office.Interop.Word
6 сообщений из 6, страница 1 из 1
C# и Microsoft.Office.Interop.Word
    #40104039
Maksimka-27
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите продраться сквозь объектную модель Word.

Есть задача, которая выполнялась для одного документа через макрос Word:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Sub CheckParaTypeWithCorrect()   
    Dim DocPara As Word.Paragraph
    Dim rngPara As Word.Range

    For Each DocPara In ActiveDocument.Paragraphs
        Set rngPara = DocPara.Range
        ' ........................
        If currentParagrapfWasTable Then
          rngPara.Select
          Selection.ClearFormatting ' Удаляем у текущего абзаца все форматирование
        End If
         ' ........................
    Next 



Потребовалось сделать эту обработку частью другого конвеера, который реализован на C#
Пытаюсь переложить это на Шарп и не могу понять, как сделать

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
using Word = Microsoft.Office.Interop.Word;

private void RemakeParagraph(Word.Document doc)
{
   for (int i=totalParagraph; i>0; i--) 
  {
    Word.Paragraph DocPara = doc.Paragraphs[i];
    Word.Range rngPara = DocPara.Range;
    // и не понимаю как тут быть
   rngPara.Select(); //??
   rngPara.ClearFormating(); // Дает ошибку, что ClearFormating не содержится в Range

  }
}



Документация на Microsoft.Office.Interop.Word не содержит никаких примеров.
Помогите!!
...
Рейтинг: 0 / 0
C# и Microsoft.Office.Interop.Word
    #40104048
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
C# и Microsoft.Office.Interop.Word
    #40104327
Maksimka-27
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это я видел, потому и пишу сюда, что не разобрался.

То, что проглатывает компилятор и вылетает при исполнении:
Код: c#
1.
2.
3.
4.
5.
6.
7.
if (currentParagrapfWasTable)
        {
            // ранее объявлено: Word.Range rngPara
            rngPara.Select();
            Word.Selection sel = (Word.Selection)rngPara;
            sel.ClearFormatting();
        }



System.InvalidCastException: "Unable to cast COM object of type 'System.__ComObject' to interface type 'Microsoft.Office.Interop.Word.Selection'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{00020975-0000-0000-C000-000000000046}' failed due to the following error: Интерфейс не поддерживается (0x80004002 (E_NOINTERFACE))."
...
Рейтинг: 0 / 0
C# и Microsoft.Office.Interop.Word
    #40104340
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нужно сначала правильно выбрать диапазон, а потом уже использовать глобальный объект Selection

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
using Word = Microsoft.Office.Interop.Word;

            
object docPath = @"C:\Test\test.docx";
var wordApp = new Word.Application();
Word.Document doc = wordApp.Documents.Open(ref docPath);


object a = doc.Application.Selection.Start;
object b = doc.Application.Selection.End;
//doc.Paragraphs[1].Range.Select();
Word.Range r1 = doc.Range(a, b);
r1.Select();
var selection = wordApp.Selection;


for (int i = 1; i <= tablecount; i++)
{
	Word.Table wTable = doc.Tables[i];
	Word.Cell pCell = wTable.Cell(i, i);

	pCell.Range.Text = "test txt";
	pCell.Range.Select();

	var selection2 = wordApp.Selection;

}
...
Рейтинг: 0 / 0
C# и Microsoft.Office.Interop.Word
    #40104343
Maksimka-27
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, разобрался.

Selection - глобальный.

rngPara.Select();
doc.Application.Selection.ClearFormatting();

Спасибо!!!
...
Рейтинг: 0 / 0
C# и Microsoft.Office.Interop.Word
    #40104451
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще не стоит интерропы юзать в ASP.NET приложухе, это всё равно, что секс без презерватива
если нужно работать с офисными файлами, для этого есть всякие OOD, NetOffice и т.д.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / C# и Microsoft.Office.Interop.Word
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]