В Perl CGI, используя Win32 :: OLE, мне нужно вставить несколько текстовых строк в ячейку таблицы, но одну за другой.
Я использую следующие объекты:
- $ go_document , документ Word
- $ lo_table , таблица Word
- $ li_row и $ li_col , координаты ячейки в таблице
- @ ly_lines , текстовый массив
Вот мой код, который работает правильно:
for (my $ii = 0; $ii <= $#ly_lines; $i++)
{
my $lo_range = $lo_table->Cell($li_row, $li_col)->Range;
$lo_range->InsertAfter($ly_lines[$ii]);
$lo_range = $lo_table->Cell($li_row, $li_col)->Range;
$lo_range->InsertParagraphAfter();
}
Моя проблема возникает, когда я пытаюсь применить стиль к каждой из текстовых строк.
Поскольку я не хочу устанавливать стиль для всей ячейки, но для строки Iсобираюсь вставить, я попробовал это (стили хранятся в массиве @ ly_styles ):
for (my $ii = 0; $ii <= $#ly_lines; $i++)
{
my $lo_range = $lo_table->Cell($li_row, $li_col)->Range;
$lo_range->Collapse(wdCollapseEnd);
$go_document->Styles->Add($ly_styles[$ii]);
$lo_range->{'Style'} = $ly_styles;
$lo_range->InsertAfter($ly_lines[$ii]);
$lo_range = $lo_table->Cell($li_row, $li_col)->Range;
$lo_range->Collapse(wdCollapseEnd);
$lo_range->InsertParagraphAfter();
}
С этим циклом текстовые строки читаются в обратном порядкепорядок и в ячейке рядом с той, которую я хочу !
Кажется, что команда Collapse (wdCollapseEnd) не устанавливает диапазон до конца целевой ячейки,но тo начало следующего.
Кто-нибудь знает, как это исправить?Заранее спасибо.