Analyser le tableau HTML dans un fichier CSV (colspan et rowspan)

asp.net c# html-agility-pack html-parsing

Question

Je souhaite analyser un tableau HTML dans un fichier CSV, tout en conservant le nombre correct de colspan et de rowpspan.

J'utilise ";" comme cellule de délimitation . Ainsi, lorsqu’il y aura 2 colonnes, par exemple, au lieu d’avoir une seule colonne, ";", elle aura 2.

Je peux extraire le contenu du tableau et faire des sauts de ligne lorsque les indicateurs tr se terminent, mais je ne sais pas comment traiter colspan et rowspan .

HtmlNodeCollection rows = tables[0].SelectNodes("tr");

// Aux vars
int i;
// ncolspan

// For each row...
for (i = 0; i < rows.Count; ++i)
{
    // For each cell in the col...
    foreach (HtmlNode cell in rows[i].SelectNodes("th|td"))
    {
        /* Unsuccessful attempt to treat colspan
        foreach (HtmlNode n_cell in rows[i].SelectNodes("//td[@colspan]"))
        {
            ncolspan = n_cell.Attributes["colspan"].Value;
        }
        */

        text.Write(System.Text.RegularExpressions.Regex.Replace(cell.InnerText, @"\s\s+", ""));
        text.Write(";");
        /*
        for (int x = 0; x <= int.Parse(ncolspan); x++)
        {
            text.Write(";");
        }
        */
    }
    text.WriteLine();
    ncolspan = "0";
}

Toute aide, s'il vous plaît? Je vous remercie!

UPDATE: Voici un exemple de tableau simple à utiliser:

<table id="T123" border="1">
    <tr>
        <td colspan="3"><center><font color="red">Title</font></center></td>
    </tr>
    <tr>
        <th>R1 C1</th>
        <th>R1 C2</th>
        <th>R1 C3</th>
    </tr>
    <tr>
        <td>R2 C1</td>
        <td>R2 C2</td>
        <td>R2 C3</td>
    </tr>
    <tr>
        <td colspan="2">R3 C1 e C2 with "</td>
        <td>R3 C3</td>
    </tr>
    <tr>
        <td>R4 C1</td>
        <td colspan=2>R4 C2 e C3 without "</td>
    </tr>
    <tr>
        <td>R5 C1</td>
        <td>R5 C2</td>
        <td>R5 C3</td>
    </tr>
    <tr>
        <td rowspan ="2">R6/R7 C1: Two lines rowspan. Must leave the second line blank.</td>
        <td>R6 C2</td>
        <td>R6 C3</td>
    </tr>
    <tr>
        <td>R7 C2</td>
        <td>R7 C3</td>
    </tr>
    <tr>
        <td>End</td>
    </tr>
</table>

Réponse populaire

CSV ne gère pas les valeurs rowspan ou colspan - il s'agit d'un format très simple qui ne comprend aucun concept de colonnes ou de lignes au-delà de son délimiteur et du caractère de fin de ligne.

Si vous souhaitez conserver les lignes et les colonnes, vous devez utiliser un modèle objet intermédiaire que vous pouvez utiliser pour stocker le contenu spécifique d'une cellule et son emplacement, par exemple, avant d'exporter le modèle au format CSV. Et même dans ce cas, le format CSV ne conservera pas les valeurs colspan et rowspan comme vous pouvez le souhaiter (c’est-à-dire comme le ferait une feuille Excel).



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow