2010-03-29 3 views
1

J'ai exporté des données d'une page PHP vers un document Word mais l'en-tête n'est pas disponible dans toutes les pages.Exporter vers Word depuis PHP ne contient pas d'en-têtes au-delà de la première page

L'en-tête est présent dans la première page mais pas dans les autres pages du document Word.

Voici mon code,

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> 
+1

Le code semble générer du code HTML, pas un document Word. Quelle bibliothèque/framework utilisez-vous? – outis

+0

@outis je n'utilise aucune bibliothèque et le code fonctionne très bien pour moi le seul problème est l'en-tête de page qui ne vient pas après la première page .... –

+1

alors l'échantillon est incomplet. De quelle classe est 'changeDetails' une partie de? Qu'en est-il des méthodes 'load-> library',' AddEditmodel1-> export' et 'table -> ...'? Quand et comment appelle-t-on 'changeDetails'? De quels en-têtes parlez-vous, les en-têtes de table (qui doivent utiliser les éléments , pas ) ou les en-têtes HTTP (à partir des fonctions 'header')? – outis

Répondre

1

Si vous marquez la ligne d'en-tête (s) avec un élément <thead> vous devriez obtenir ce que vous voulez. Donc, ce code devient

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

</tr> 
</thead> 
+0

un b c est le balisage correct – Moak

1

ne savent pas Hearder mais quelle boucle est un peu ce u r en utilisant

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

la balise TR ne se ferme pas (sauf dernier) partout.

0

Pourquoi Microsoft Word?

Maintenant, deux solutions:

  1. Si vous nommez le fichier correctement, et de définir votre type MIME correctement, vous pouvez être en mesure d'obtenir MS Word pour ouvrir le fichier HTML, tout comme vous pouvez le Bureau, lorsque vous utilisez le fichier → Ouvrir le dialogue.

  2. Une autre option consiste à générer LaTEX, puis à utiliser latex2rtf pour créer RTF. Il y a des convertisseurs de HTML en RTF, et RTF est assez simple que vous pourriez le faire, mais le LaTEX est plus facile à faire que RTF et la qualité semble être meilleure que HTML au RTF.
    Utilisez un appel système pour exécuter l'application, en nommant le fichier à l'aide d'un UUID si les données sont sensibles, puis en le redirigeant. Vous n'auriez même pas besoin de faire les en-têtes, car votre serveur web devrait déjà savoir quoi faire avec un RTF.

Questions connexes