Вопрос

Я пытаюсь создавать таблицы внутри таблиц в WORD.конечно в финальной программе он будет динамичным, чего нет в этом образце.

Вот мой пример кода.

 var
  aTable, bTable, cTable : OLEVariant;
begin
  m_WordApplication := CreateOleObject('Word.Application') ;
  m_WordDocument := m_WordApplication.Documents.Add;

  aTable := m_WordDocument.Tables.Add(m_WordApplication.Selection.Range, 2, 1);
  aTable.Borders.Item(wdBorderLeft).LineStyle:=wdLineStyleSingle;
  aTable.Borders.Item(wdBorderRight).LineStyle:=wdLineStyleSingle;
  aTable.Borders.Item(wdBorderTop).LineStyle:=wdLineStyleSingle;
  aTable.Borders.Item(wdBorderBottom).LineStyle:=wdLineStyleSingle;

  bTable := m_WordDocument.Tables.Add(aTable.Cell(1, 1).Range, 2, 1);
  bTable.Borders.Item(wdBorderLeft).LineStyle:=wdLineStyleSingle;
  bTable.Borders.Item(wdBorderRight).LineStyle:=wdLineStyleSingle;
  bTable.Borders.Item(wdBorderTop).LineStyle:=wdLineStyleSingle;
  bTable.Borders.Item(wdBorderBottom).LineStyle:=wdLineStyleSingle;

  cTable := m_WordDocument.Tables.Add(aTable.Cell(2, 1).Range, 3, 1);
  cTable.Borders.Item(wdBorderLeft).LineStyle:=wdLineStyleSingle;
  cTable.Borders.Item(wdBorderRight).LineStyle:=wdLineStyleSingle;
  cTable.Borders.Item(wdBorderTop).LineStyle:=wdLineStyleSingle;
  cTable.Borders.Item(wdBorderBottom).LineStyle:=wdLineStyleSingle;

  m_WordDocument.SaveAs('C:/test.doc', False) ;
  m_WordApplication.Quit(False);

Сначала я помещаю новую таблицу (2 строки, 1 столбец) в позицию курсора, а затем пытаюсь поместить вторую таблицу в ячейку (1,1) и третью в ячейку (2,1) первой таблицы.вторая таблица также имеет 2 строки и 1 столбец, а третья таблица имеет 3 строки и 1 столбец.но вместо того, что я хочу, я получаю вторую и третью таблицу только с одной строкой, независимо от того, помещаю ли я что-то в их ячейку или нет. Я всегда вижу только последнюю строку, которую я положил в эту таблицу.

более того, если я помещу таблицу из 1 строки и 2 столбцов в первую таблицу, все будет нормально.

Вы можете помочь мне.

спасибо, Рок

Это было полезно?

Решение

Если у вас возникли проблемы с созданием этих таблиц в коде, сделайте следующее:

  • Открытое слово
  • записать новый макрос
  • Во время записи постройте нужную таблицу, затем остановите запись.
  • Просмотрите код макроса в редакторе Visual Basic и попытайтесь перевести его в код OLE-автоматизации (что не так уж и сложно, это почти то же самое).

Другие советы

aTable.Borders.Item(wdBorderVertical).LineStyle:=wdLineStyleSingle;
aTable.Borders.Item(wdBorderHorizontal).LineStyle:=wdLineStyleSingle;

Вам придется сделать то же самое для bTable и cTable.

Когда вы добавляете более 1 строки/столбца, для их разделения потребуется граница (т. е. чтобы отделить 1 строку от другой ИЛИ отделить 1 столбец от другого).

Надеюсь это поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top