繁体   English   中英

将HTML表解析为CSV文件(colspan和rowspan)

[英]Parse HTML table to a CSV file (colspan and rowspan)

我想将HTML表解析为CSV文件,但要保留正确数量的colspan和rowpspan。

我正在使用“;” 作为分隔格 因此,例如,当有2列colspan时,而不是只有一列“;”,它将有2列。

我可以提取表的内容并在tr指示符的结尾处换行,但不知道如何处理colspanrowspan

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

有什么帮助吗? 谢谢!

更新:这里使用一个简单的示例表:

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

CSV不处理rowpan或colspan值-这是一种非常简单的格式,除了定界符和行尾字符外,没有列或行的概念。

如果要尝试保留行跨度和列跨度,则需要使用中间对象模型,例如,在将模型导出为CSV之前,可以使用该对象模型存储单元格的特定内容及其位置。 即使那样,CSV格式也不会像您希望的那样保留colspan和rowpan(即,像Excel工作表一样)。

是的,您不能以csv格式放置rowpan或colspan,对我有用的是在应该存在跨度的地方放置空格

这不是最佳选择,但从外观上看,它看起来很相似

"";SEPTIEMBRE;;OCTUBRE;;NOVIEMBRE;;TOTAL;
PRODUCTOS;cantidad;monto;cantidad;monto;cantidad;monto;cantidad;monto

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM