У меня есть приложения для человеческих ресурсов в моей таблице mysql, и я пытаюсь загрузить эти данные в виде файла Excel.
function exportExcel($filename='ExportExcel',$columns=array(),$data=array(),$replaceDotCol=array()){
global $connect;
header('Content-Encoding: UTF-8');
header('Content-Type: text/plain; charset=utf-8');
header("Content-disposition: attachment; filename=".$filename.".xls");
echo "\xEF\xBB\xBF"; // UTF-8 BOM
$count=count($columns);
echo '<table border="1">';
echo '<th>1</th>';
echo '<th>2</th>';
foreach($columns as $col){
echo '<tr><th>'.trim($col).'</th>';
foreach($data as $val){
for($i=0; $i < $count; $i++){
if(in_array($i,$replaceDotCol)){
echo '<td>'.str_replace('.',',',$val[$i]).'</td></tr>';
}else{
echo '<td>'.$val[$i].'</td></tr>';
}
}
}
}
}
Я посылаю два массива для работы, один из них содержит описания, такие как имя, день рождения, место рождения и т.д., А другой - мои данные mysql.
Моя цель - показать эти сведения в двух столбцах. В моем коде выходной вывод любит только строки.
Помимо структуры html, также у меня были ошибки на моих петлях foreach. Кажется, мне они не нужны. Просто, используя один цикл while для всех массивов, при условии правильного отображения. Новичок здесь.
function exportExcel($filename='ExportExcel',$columns=array(),$data=array(),$replaceDotCol=array()){
global $connect;
header('Content-Encoding: UTF-8');
header('Content-Type: text/plain; charset=utf-8');
header("Content-disposition: attachment; filename=".$filename.".xls");
echo "\xEF\xBB\xBF"; // UTF-8 BOM
$count=count($columns);
$i = 0 ;
echo '<table border="1">';
while ($i<=$count) {
echo "<tr>";
echo "<th>" .$columns[$i]."</th>";
echo "<td style='width='60%''>" .$data[$i]. "</td>";
echo "<tr>";
$i++;
}
echo "</table>";
}
вы закрываете свою строку, используя </tr>
каждый раз, когда вы пишете значение столбца. Итак, а) ваша окончательная разметка, вероятно, недействительна (хотя Excel может ее терпеть и угадать, что вы имели в виду), и б) почему все находится в одном столбце. Закрывайте <tr>
после того, как вы написали все нужные столбцы в этой строке. Кроме того, вы не выводите строку заголовка должным образом, она объединяется в данные.
Это должно работать:
echo '<tr>'; //header row
foreach($columns as $col){
echo '<th>'.trim($col).'</th>';
}
echo '</tr>'; //end header row
foreach($data as $val){
echo '<tr>'; //begin data row
for($i=0; $i < $count; $i++){
if(in_array($i,$replaceDotCol)){
echo '<td>'.str_replace('.',',',$val[$i]).'</td>';
}else{
echo '<td>'.$val[$i].'</td>';
}
}
echo '</tr>'; //end data row
}
.xls(x)
и правильно отображать их в соответствии с указанными стилями. Многие начинающие программисты, особенно из 90-х и начала 2000-х годов, склонны злоупотреблять этой возможностью, чтобы маскировать HTML-таблицы в файлы Excel ...