Мне нужно настроить фоновые цвета ячеек в зависимости от соседних ячеек.
Мой шаблон представляет собой текстовый документ, и я установил цвет ячейки на некоторый случайный цвет, чтобы мой интересующий XML-файл выглядел следующим образом:
<w:tc>
<w:tcPr>
<w:tcW w:w="5400" w:type="dxa"/>
<w:tcBorders>
<w:left w:val="single" w:sz="4" w:space="0" w:color="D9D9D9" w:themeColor="background1" w:themeShade="D9"/>
</w:tcBorders>
<w:shd w:val="clear" w:color="auto" w:fill="D9D9D9" w:themeFill="background1" w:themeFillShade="D9"/>
</w:tcPr>
<w:pPr><w:rPr><w:sz w:val="20"/><w:szCs w:val="20"/></w:rPr></w:pPr>
<w:r>
<w:rPr>
<w:sz w:val="20"/><w:szCs w:val="20"/>
</w:rPr>
<w:t>[title.bg;att=w:shd#w:fill][title.quoteFOB]</w:t>
</w:r>
Важными моментами являются:
Вызов для выполнения слияния выглядит так:
$TBS->MergeField('title', array('custName' => $custName,
'compName' => $compName, 'custAddress1' => $custAddr1,
'custAddress2' => $custAddr2, 'quoteNum' => $quoteNum,
'quoteRev' => $quoteRev, 'quoteForm' => $quoteForm,
'quoteExpDate' => $quoteExp, quoteTerms' => $quoteTerm,
'quoteFOB' => $quoteFob, bg'=>'00FF00'));
Это один из нескольких блоков слияния, содержащих несколько обновлений ячеек, каждый из которых, кажется, работает должным образом. Все, кроме цвета ячейки, меняется.
Я пробовал множество вещей, которые могут вызывать проблему, таких как: отключение всех слияний, кроме одного, изменение порядка полей и чтение пути ко многим записям stackoverflow. Ни один из которых не работал.
Я предполагал, что я идиот, и я мог понять это, посмотрев на код. и трассировка через код. Я обнаружил, что до вызова Show () TBS-> Source был таким, как ожидалось. Произошли все слияния, и значение w: fill было правильно подставлено в измененный XML. Но когда я звоню
$TBS->Show(OPENTBS_DOWNLOAD, "$fileName.docx") and
$TBS->Show(OPENTBS_STRING);
Выходной файл docx не содержит изменения -w: fill. Все до и после, но не это изменение. Теперь я вернулся к мысли, что я идиот, и я делаю что-то не так.
Есть идеи, что я делаю не так? Пожалуйста, помогите мне.
Недостаточно просто изменить атрибут -w: fill на «[title.bg; att = w: shd # w: fill]». Похоже, что MS-Word игнорировал этот атрибут, пока присутствовал параметр -w: themeFill = «background1». Как только я добавил ‘[title.tf; att = w: shd # w: themeFill], чтобы изменить атрибут themeFill на пустую строку, все работало, как и ожидалось.
Я смущен тем, как много времени мне потребовалось, чтобы сделать шаг назад и посмотреть на выходной XML второй / третий раз. Я надеюсь, что это поможет кому-нибудь еще не тратить столько времени, сколько я.
Других решений пока нет …