Пустые ячейки и html приводят к таблицам Word API Javascript - PullRequest
0 голосов
/ 29 апреля 2020

Следующий код должен подсчитывать абзацы, и в каждом абзаце функция 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)
    }
  }
})

Содержание документа выглядит следующим образом

enter image description here

и журнал кодов:

enter image description here

Как видите, некоторые ячейки, которые не отображаются в таблице, распознаются как абзацы. Поэтому я считаю их.

Но если я экспортирую слово, сделайте 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>&nbsp;</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>

Как я могу пропустить "пустые" ячейки? Как я могу выбрать их между правильными ячейками?

...