Я получаю вложенные таблицы, но мне нужны отдельные таблицы (Netoffice,Word)
Я написал WPF-приложение для печати документов Word с несколькими таблицами в нем, оно работает, но вместо разделенных таблиц я получаю вложенные таблицы.
Я смотрел на разные посты, но все они работали не очень хорошо, например:
- Версия VB
- .NET 4.5, но мне нужен.NET 4.0 (кстати, это не решило мою проблему)
- insertParagraphAfter ()
Так же, как я пытался записать макрос со словом, который дал мне
Selection.MoveDown Unit:=wdLine, Count:=1
и я превратил это в:
wordApplication.Selection.MoveDown(WdUnits.wdLine, 1);
или даже:
wordApplication.Selection.MoveDown(WdUnits.wdLine, 11);
Это начало моего исходного кода:
using System.Drawing;
using System.Reflection;
using NetOffice;
using Word = NetOffice.WordApi;
using NetOffice.WordApi.Enums;
using System.Globalization;
using System.Windows;
...
Word.Application wordApplication ...
Word.Document newDocument = wordApplication.Documents.Add();
Это первая таблица:
Word.Table table = newDocument.Tables.Add(wordApplication.Selection.Range, 6, 2);
// insert some text into the cells
table.Cell(1, 1).Select();
wordApplication.Selection.TypeText("...");
...
Это вторая таблица, но текст помещается в последнюю ячейку моей первой таблицы (последняя ячейка):
Word.Table tableSchool = newDocument.Tables.Add(wordApplication.Selection.Range, 4, 2, WdDefaultTableBehavior.wdWord9TableBehavior);
tableSchool.Cell(1, 1).Select();
wordApplication.Selection.TypeText("...");
...
обновлено. 17 июня, 9 часов вечера
Я нашел что-то, что помещает курсор вне таблицы, но это в начале файла, это не должно быть:
wordApplication.Selection.GoToNext(WdGoToItem.wdGoToSection);
wordApplication.Selection.TypeText("GoToNext");
обновлено. 17 июня, 21:30
Использование "InsertAfter" работает в зависимости от того, куда я поместил это утверждение, но это все равно не решает мою проблему.
wordApplication.Selection.Range.InsertAfter("test2");
Word.Table table = newDocument.Tables.Add(wordApplication.Selection.Range, 4, 2, WdDefaultTableBehavior.wdWord9TableBehavior);
Это должно быть скорректировано "wordApplication.Selection.Range" к какому-то типу "InsertAfter", объединяя две вещи, которые я обнаружил.
обновлено 18.06 07:30
Если я использую это, я получаю "ComException"(макро-рекордер показал мне это):
wordApplication.Selection.MoveRight(WdUnits.wdCharacter, 1);
wordApplication.Selection.TypeParagraph();
обновлено 18.06 07:45
Затем я обнаружил, что это довольно близко к моей цели (но заменяет последнюю ячейку предыдущей таблицы):
wordApplication.Selection.EndKey(WdUnits.wdStory, WdMovementType.wdExtend);
wordApplication.ActiveWindow.Selection.PasteAndFormat(WdRecoveryType.wdPasteDefault);
Заранее спасибо:)