我的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数据。
我的目标是,在两列中显示这些信息。在我的代码中,输出显示只喜欢行。
2条答案
按热度按时间72qzrwbm1#
除了html结构,我的foreach循环也有错误。看来我不需要它们。简单地说,对所有数组使用一个while循环可以提供正确的显示。我是新手。
显示
zc0qhyus2#
您正在使用关闭行
</tr>
每次写入列值时。所以a)你的最终标记可能是无效的(尽管excel可能会容忍它并猜测你的意思)和b)这就是为什么所有东西都在一列中。只关闭<tr>
当您将所有想要的列写入该行时。另外,您没有正确输出标题行,它正在合并到数据中。这应该起作用: