通过PHP将HTML表格转换为CSV

时间:2014-02-20 04:08:18

标签: php html html-table export-to-csv

我正在尝试从下面的html表中提取每个td元素,并将每个元素导入到CSV文件中的自己的单元格中。

以下是两个html表:

<table width="100%"  border="0" cellspacing="1" cellpadding="0" bgcolor="#006699">
<tr align="center" class="tableRow1Font">
<td width="7%">WAITLIST</td>
<td width="5%">91630</td>
<td width="11%">
ACCY <A HREF="http://www.gwu.edu/~bulletin/ugrad/accy.html#2001" target="_blank">2001</A>
</td>
<td width="5%">10</td>
<td width="16%">Intro Financial Accounting</td>
<td width="6%">3.00</td>
<td width="8%"> Zou, Y</td>
<td width="8%"><A HREF="http://www.gwu.edu/~map/building.cfm?BLDG=DUQUES" target="_blank"
>DUQUES</a> 251</td>
<td width="13%">TR<br>09:35AM - 10:50AM</td>
<td width="14%">
01/13/14 - 04/28/14
</td>
<td width="7%">
</td>
</tr>
</table>

<table width="100%"  border="0" cellspacing="1" cellpadding="0" bgcolor="#006699">
<tr align="center" class="tableRow2Font">
<td width="7%">WAITLIST</td>
<td width="5%">90003</td>
<td width="11%">
ACCY <A HREF="http://www.gwu.edu/~bulletin/ugrad/accy.html#2001" target="_blank">2001</A>
</td>
<td width="5%">11</td>
<td width="16%">Intro Financial Accounting</td>
<td width="6%">3.00</td>
<td width="8%"> Zou, Y</td>
<td width="8%"><A HREF="http://www.gwu.edu/~map/building.cfm?BLDG=DUQUES" target="_blank" 
>DUQUES</a> 254</td>
<td width="13%">TR<br>11:10AM - 12:25PM</td>
<td width="14%">
1/13/14 - 04/28/14
</td>
<td width="7%">                                     
</td>
</tr>
</table>

我编写的代码遍历表格并提取td元素:

    foreach($html->find('tr[align=center] td') as $e)
    $str .= strip_tags($e->innertext) . ', ';
    echo $str;

那么如何将这些元素提取到CSV文件中呢?在Excel中,我想让它看起来像每个td元素在它自己的单元格中,为每个html表开始一个新行:

WAITLIST  91630  ACCY 2001  10  Intro Financial Accounting  3.00  Zou, Y  DUQUES 251  TR  
WAITLIST  90003  ACCY 2001  11  Intro Financial Accounting  3.00  Zou, Y  DUQUES 251  TR

2 个答案:

答案 0 :(得分:2)

这里有一个库。转到http://phpexcel.codeplex.com/。下载zip文件,在示例中,您会发现17html.php尝试此代码。我希望这会有所帮助。

答案 1 :(得分:0)

CSV表示逗号分隔值。因此,当您回显数据时(在通过函数运行它以去除<td>标记之后),在每个数据(单元格)和新行之间放置逗号,您希望下一行开始。

因此,要使用上面的示例,它应如下所示:

WAITLIST,91630,ACCY,2001,10,Intro Financial Accounting,3.00,Zou,Y,DUQUES,251,TR
WAITLIST,90003,ACCY,2001,11,Intro Financial Accounting,3.00,Zou,Y,DUQUES,2,

请记住,当你echo这个时,你不应该有任何其他的html标签或任何东西。