如何将CSV文件转换为左侧显示表头的HTML表格?
需求:将CSV转HTML表格时把表头移到左侧
当前用PHP代码将CSV文件转换为HTML表格,生成的表格表头位于顶部(横向表头),现在需要调整为表头在左侧(纵向表头),CSV数据显示在表头右侧。
原参考代码
<?php $row = 1; if (($handle = fopen("Book1.csv", "r")) !== FALSE) { echo '<table border="1">'; while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $num = count($data); if ($row == 1) { echo '<thead><tr>'; }else{ echo '<tr>'; } for ($c=0; $c < $num; $c++) { if(empty($data[$c])) { $value = " "; }else{ $value = $data[$c]; } if ($row == 1) { echo '<th>'.$value.'</th>'; }else{ echo '<td>'.$value.'</td>'; } } if ($row == 1) { echo '</tr></thead><tbody>'; }else{ echo '</tr>'; } $row++; } echo '</tbody></table>'; fclose($handle); } ?>
CSV文件格式说明
CSV第一行为表头(如姓名、年龄、性别等),后续每行为对应的数据记录。
修改后的代码(单表头对应单数据列)
这个版本会让每个表头单独占一行,右侧是所有数据行中该列的内容,是纵向表头的常见展示形式:
<?php $headers = []; $dataRows = []; if (($handle = fopen("Book1.csv", "r")) !== FALSE) { $rowIndex = 0; while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { if ($rowIndex == 0) { // 存储表头数组 $headers = $data; } else { // 存储所有数据行 $dataRows[] = $data; } $rowIndex++; } fclose($handle); // 生成纵向表头表格 echo '<table border="1">'; foreach ($headers as $colIndex => $header) { echo '<tr>'; // 左侧表头 echo '<th>' . $header . '</th>'; // 右侧对应所有数据 foreach ($dataRows as $dataRow) { $value = !empty($dataRow[$colIndex]) ? $dataRow[$colIndex] : " "; echo '<td>' . $value . '</td>'; } echo '</tr>'; } echo '</table>'; } ?>
另一种实现(单数据行对应全表表头)
如果需要每条数据记录单独一行,每行左侧依次排列所有表头、右侧对应数据:
<?php $headers = []; $dataRows = []; if (($handle = fopen("Book1.csv", "r")) !== FALSE) { $rowIndex = 0; while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { if ($rowIndex == 0) { $headers = $data; } else { $dataRows[] = $data; } $rowIndex++; } fclose($handle); echo '<table border="1">'; foreach ($dataRows as $dataRow) { echo '<tr>'; foreach ($headers as $index => $header) { $value = !empty($dataRow[$index]) ? $dataRow[$index] : " "; echo '<th>' . $header . '</th>'; echo '<td>' . $value . '</td>'; } echo '</tr>'; } echo '</table>'; } ?>
代码核心思路
- 先遍历CSV文件,分离存储表头和数据行,避免边读边输出的横向结构限制
- 按照纵向表头的排版逻辑,重新组合表头与数据的对应关系
- 保留原代码的空值处理逻辑,确保空单元格显示空格
内容的提问来源于stack exchange,提问作者user19380275
相关产品推荐
相关产品推荐

