[英]Import specific rows and columns form csv file into table using php
我对php还是很陌生,但是已经使用“ fgetcsv”引入CSV文件并将其转换为html表进行了相当成功的尝试。
但是,我也有一个包含70列和700行的大型CSV文件,但是我只想在一个表中显示1到47列和3到21行,然后在另一张表中显示22到44行相同的列。
非常感谢您的帮助,以下是我目前正在使用的代码:
<?php
$row = 1;
if (($handle = fopen("CSV/test.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++) {
//echo $data[$c] . "<br />\n";
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);
}
?>
对于列试试这个
for ($c=0; $c < 47; $c++) {
//echo $data[$c] . "<br />\n";
if(empty($data[$c])) {
$value = " ";
}else{
$value = $data[$c];
}
if ($row == 1) {
echo '<th>'.$value.'</th>';
}else{
echo '<td>'.$value.'</td>';
}
}
因此,您将在第0列和第47列之间打印单元格。对于该行,您必须设置一个计数器,并在while语句中使用if来打印所需范围内的行。 如果您不需要其他条件,最好在第44行之后的while中设置退出条件。
<?php
$row = 1;
if(($handle = fopen("CSV/test.csv", "r")) !== false) {
$table1 = $table2 = '<table border="1">';
while (($data = fgetcsv($handle, 1000, ",")) !== false) {
$table1Add = $table2Add = false;
if($row >=3 && $row <= 21)
$table1Add = true;
if($row >=22 && $row <= 44)
$table2Add = true;
$num = count($data);
if($row == 1) {
$table1 .= '<thead><tr>';
$table2 .= '<thead><tr>';
for($c = 1; $c <= 47; $c++) {
$value = empty($data[$c]) ? " " : $data[$c];
$table1 .= '<th>'.$value.'</th>';
$table2 .= '<th>'.$value.'</th>';
}
$table1 .= '</tr></thead><tbody>';
$table2 .= '</tr></thead><tbody>';
} else {
if($table1Add) $table1 .= '<tr>';
if($table2Add) $table2 .= '<tr>';
for($c = 1; $c <= 47; $c++) {
$value = empty($data[$c]) ? " " : $data[$c];
if($table1Add) $table1 .= '<td>'.$value.'</td>';
if($table2Add) $table2 .= '<td>'.$value.'</td>';
}
if($table1Add) $table1 .= '</tr>';
if($table2Add) $table2 .= '</tr>';
}
$row++;
}
$table1 .= '</tbody></table>';
$table2 .= '</tbody></table>';
fclose($handle);
echo $table1;
echo $table2;
}
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.