2011-05-18 4 views
0

Je suis coincé avec idée sur la création de CSV approprié à partir d'une table html. J'utilise HTMLAgilityPack pour lire le code HTML à partir d'une chaîne et créer un HTMLDocument. Ensuite, j'utilise XPATH pour faire défiler les lignes et les colonnes.html table au format CSV, problème de formatage dans csv

Le problème est que je suis incapable de déterminer la ligne correcte et la cellule (x, y) pour une cellule particulière.

Exemple HTML:

<html> 
<body> 
    <table border="1"> 
     <tr> 
      <td rowspan="2"> 
       100 
      </td> 
      <td> 
       200 
      </td> 
      <td colspan="2"> 
       300 
      </td> 
     </tr> 
     <tr> 
      <td colspan="2"> 
       400 
      </td> 
      <td> 
       600 
      </td> 
     </tr> 
     <tr> 
      <td> 
       400 
      </td> 
      <td> 
       500 
      </td> 
      <td> 
       600 
      </td> 
     </tr> 
    </table> 
</body> 
</html> 

Image of Table

Quand je l'ouvrir dans Excel et enregistrer au format CSV, je reçois la sortie désirée, qui est:

100,200,300, 
,400,,600 
400,500,600, 

peut-elle aider quelqu'un moi créer la même sortie dans .Net respectant le rowpan et colspan?

Merci! Dex

Répondre

2

Vous n'avez pas besoin de savoir sur quelle ligne et quelle colonne vous êtes. Tout ce que vous devez faire est d'ajouter un "," pour chaque nouvelle colonne que vous avez trouvé et une ligne de rupture chaque fois que vous atteignez la fin d'une ligne. Si vous parcourez le document en le considérant comme un document xml, il vous suffit de parcourir tous les nœuds TR pour ajouter une ligne de rupture lorsque vous atteignez la fin de la liste des nœuds enfants. Et parcourez tous les nœuds TD sur chaque nœud TR en ajoutant un "," si nécessaire.