Экспорт в Word из PHP не переносит заголовки за пределы первой страницы

Я экспортировал данные со страницы PHP в документ Word, но заголовок доступен не на всех страницах.

Заголовок присутствует на первой странице, но не на других страницах документа Word.

Вот мой код,

function changeDetails()
{
    $bType = $this->input->post('textvalue');
    if ($bType == "word")
    {
        $this->load->library('table');
        $data['countrytoword'] = $this->AddEditmodel1->export();
        $this->table->set_heading('Name','Country','State','Town');
        $out =  $this->table->generate($data['countrytoword']); 
        header("Content-Type: application/vnd.ms-word");
        header("Expires: 0");
        header("Cache-Control:  must-revalidate, post-check=0, pre-check=0");
        header("Content-disposition: attachment; filename=$cur_date.doc");
        echo '<br><br>';
        echo '<strong>CountryList</strong><br><br>';
        print_r($out);
    }
}
<? if(isset($countrytoword)) { ?>
  <table align="center" border="0">
    <tr>
      <td>Name</td>
      <td>Country</td>
      <td>State</td>
      <td>Town</td>
    </tr>
    <? foreach($countrytoword as $dsasffd) { ?>
      <tr>
        <td><?= $dsasffd['dbName'] ?></td>
        <td><?= $dsasffd['dbCountry']; ?></td>
        <td><?= $dsasffd['dbState']; ?></td>
        <td><?= $dsasffd['dbTown']; ?></td>
  <? } } ?>
    </tr>
  </table>

3 ответа

Не знаю, о слушателе, но что это за петля эта ур с помощью

<? foreach($countrytoword as $dsasffd) { ?>
      <tr>
        <td><?= $dsasffd['dbName'] ?></td>
        <td><?= $dsasffd['dbCountry']; ?></td>
        <td><?= $dsasffd['dbState']; ?></td>
        <td><?= $dsasffd['dbTown']; ?></td>
  <? } } ?>

тег TR нигде не закрывается (кроме последнего).

Если вы пометите строки заголовка элементом , вы получите то, что хотите. Так что этот код становится

 <table align="center" border="0"> 
 <thead>
 <tr> 
  <td> 
   Name 
  </td> 
  <td> 
   Country 
  </td> 
  <td> 
   State 
  </td> 
  <td> 
   Town 
  </td> 

 </tr> 
 </thead>

Почему Microsoft Word?

Теперь два решения:

  1. Если вы правильно назвали файл и правильно указали тип MIME, вы можете получить MS Word, чтобы открыть файл HTML, так же, как и с рабочего стола, когда вы используете диалог Файл → Открыть.

  2. Другой вариант - сгенерировать LaTEX, а затем использовать latex2rtf для создания RTF. Есть конвертеры HTML в RTF, и RTF достаточно прост, чтобы вы могли это сделать, но LaTEX проще в создании, чем RTF, и качество кажется лучше, чем HTML в RTF.
    Используйте системный вызов для запуска приложения, присвойте файлу имя, используя UUID, если данные чувствительны, а затем перенаправьте. Вам даже не нужно создавать заголовки, так как ваш веб-сервер уже должен знать, что делать с RTF.

Другие вопросы по тегам