Analizar tabla HTML a un archivo CSV (colspan y rowspan)

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

Pregunta

Quiero analizar una tabla HTML en un archivo CSV, pero manteniendo el número correcto de colspan y rowpspan.

Estoy usando ";" Como célula delimitadora . Por lo tanto, cuando haya colspan de 2 columnas, por ejemplo, en lugar de tener solo una, ";", tendrá 2.

Puedo extraer el contenido de la tabla y hacer saltos de línea donde terminan los indicadores tr , pero no sé cómo tratar colspan y rowpan .

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";
}

¿Alguna ayuda, por favor? ¡Gracias!

ACTUALIZACIÓN: Aquí una tabla de ejemplo simple para usar:

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

Respuesta popular

CSV no maneja los valores de rowpan o colspan, es un formato muy simple que no tiene un concepto de columnas o filas más allá de su delimitador y el carácter de final de línea.

Si desea intentar preservar el intervalo de filas y el intervalo de rotación, deberá utilizar un modelo de objeto intermedio que pueda utilizar para almacenar el contenido específico de una celda y su ubicación, por ejemplo, antes de exportar el modelo a CSV. E incluso en ese caso, el formato CSV no conservará colspan y rowpan como puede estar esperando (es decir, como lo haría una hoja de Excel).




Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué