Следующий код должен подсчитывать абзацы, и в каждом абзаце функция placeComponents использует скороговорку, чтобы определить, содержит ли абзац определенный текст. (На самом деле все сложнее, но здесь суммируется, что делает код.)
await window.Word.run(async context => {
const paragraphs = context.document.body.paragraphs
context.load(paragraphs, 'text,tableNestingLevel,contentControls/title')
await context.sync()
let emptyParagraphTable = 0
for (let i = 0; i < paragraphs.items.length; i++) {
console.log('Is the paragrap in table?', paragraphs.items[i].tableNestingLevel !== 0, i, paragraphs.items[i].text)
if (paragraphs.items[i].tableNestingLevel !== 0 && paragraphs.items[i].text === '') {
emptyParagraphTable += 1
} else {
const id = i - emptyParagraphTable
await placeComponents(paragraphs.items[i], id)
}
}
})
Содержание документа выглядит следующим образом
и журнал кодов:
Как видите, некоторые ячейки, которые не отображаются в таблице, распознаются как абзацы. Поэтому я считаю их.
Но если я экспортирую слово, сделайте c в html, «пустые» абзацы не появятся (как вы можете видеть в следующем html коде). Поэтому я пытаюсь выполнить поиск, но <p>
по порядку невозможно сделать правильно:
<tr>
<td width=154 valign=top style='width:115.4pt;border:solid windowtext 1.0pt; padding:0cm 5.4pt 0cm 5.4pt'>
<p class=111 style='margin-left:0cm;text-indent:0cm'><span lang=EN-US>NAME</span></p>
</td>
<td width=161 colspan=3 valign=top
style='width:121.05pt;border:solid windowtext 1.0pt; border-left:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=111 style='margin-left:0cm;text-indent:0cm'><span lang=EN-US>SURNAME</span></p>
</td>
<td width=145 valign=top
style='width:108.75pt;border:solid windowtext 1.0pt; border-left:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=111 style='margin-left:0cm;text-indent:0cm'><span lang=EN-US>AGE</span></p>
</td>
</tr>
<tr style='height:12.5pt'>
<td width=154 rowspan=2 valign=top
style='width:115.4pt;border:solid windowtext 1.0pt; border-top:none;padding:0cm 5.4pt 0cm 5.4pt;height:12.5pt'>
<p class=111 style='margin-left:0cm;text-indent:0cm'><span lang=EN-US>Francho</span></p>
</td>
<td width=81 rowspan=2 valign=top
style='width:60.5pt;border-top:none; border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt; padding:0cm 5.4pt 0cm 5.4pt;height:12.5pt'>
<p class=111 style='margin-left:0cm;text-indent:0cm'><span lang=EN-US>García</span></p>
</td>
<td width=81 colspan=2 valign=top
style='width:60.55pt;border-top:none; border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt; padding:0cm 5.4pt 0cm 5.4pt;height:12.5pt'>
<p class=111 style='margin-left:0cm;text-indent:0cm'><span lang=EN-US>Villarroya</span></p>
</td>
<td width=145 rowspan=2 valign=top
style='width:108.75pt;border-top:none; border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt; padding:0cm 5.4pt 0cm 5.4pt;height:12.5pt'>
<p class=111 style='margin-left:0cm;text-indent:0cm'><span lang=EN-US>40</span></p>
</td>
</tr>
<tr style='height:12.5pt'>
<td width=40 valign=top
style='width:30.25pt;border-top:none;border-left: none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt; padding:0cm 5.4pt 0cm 5.4pt;height:12.5pt'>
<p class=111 style='margin-left:0cm;text-indent:0cm'><span lang=EN-US>Juan</span></p>
</td>
<td width=40 valign=top
style='width:30.3pt;border-top:none;border-left:none; border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt; padding:0cm 5.4pt 0cm 5.4pt;height:12.5pt'>
<p class=111 style='margin-left:0cm;text-indent:0cm'><span lang=EN-US>Berna</span></p>
</td>
</tr>
<tr>
<td width=154 valign=top
style='width:115.4pt;border:solid windowtext 1.0pt; border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=111 style='margin-left:0cm;text-indent:0cm'><span lang=EN-US>____</span></p>
</td>
<td width=161 colspan=3 valign=top
style='width:121.05pt;border-top:none; border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt; padding:0cm 5.4pt 0cm 5.4pt'>
<p class=111 style='margin-left:0cm;text-indent:0cm'><span lang=EN-US> </span></p>
</td>
<td width=145 valign=top
style='width:108.75pt;border-top:none;border-left: none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt; padding:0cm 5.4pt 0cm 5.4pt'>
<p class=111 style='margin-left:0cm;text-indent:0cm'><span lang=EN-US>_____ /_____</span></p>
</td>
</tr>
Как я могу пропустить "пустые" ячейки? Как я могу выбрать их между правильными ячейками?