klo*_*lox 0 php mysql export-to-excel
我有一些PHP脚本用于将MYSQL表导出为Excel格式,但是在导出表后我遇到了一些问题.从db获取的数据只显示一行.
这个脚本如下:
$dbc=mysql_connect(_SRV,_ACCID,_PWD) or die(_ERROR15.": ".mysql_error());
$db=mysql_select_db("qdbase",$dbc) or die(_ERROR17.": ".mysql_error());
$sQuery = "SELECT id, Line, Model,Lot_no,
COUNT( Serial_number ) AS Qty,
SUM(S), SUM(A), SUM(B), SUM(C),
(SUM(S) + SUM(A) + SUM(B)*0.4 + SUM(C)*0.1) / COUNT(Serial_number) AS QP,
ROUND((SUM(S) + SUM(A) + SUM(B)*0.4 + SUM(C)*0.1) / COUNT(Serial_number)*1000,2) AS PPM
FROM `inspection_report`";
$rResult = mysql_query( $sQuery) or die();
$count = mysql_num_fields($rResult);
// fetch table header
$header = '';
for ($i = 0; $i < $count; $i++){
$header .= mysql_field_name($rResult, $i)."\t";
}
// fetch data each row, store on tabular row data
while($row = mysql_fetch_row($rResult)){
$line = '';
foreach($row as $value){
if(!isset($value) || $value == ""){
$value = "\t";
}else{
$value = str_replace('"', '""', $value);
$value = '"' . $value . '"' . "\t";
}
$line .= $value;
}
$data .= trim($line)."\n";
$data = str_replace("\r", "", $data);
if ($data == "") {
$data = "\nno matching records found\n";
}
header("Content-type: application/vnd.ms-excel; name='excel'");
header("Content-Disposition: attachment; filename=exportfile.xls");
header("Pragma: no-cache");
header("Expires: 0");
// output data
echo $header."\n".$data;
?>
Run Code Online (Sandbox Code Playgroud)
除此之外,如何为这张桌子做一些边框?
如果我想这样做:echo""; 哪个正确的位置使它不能使我的脚本成为错误?
如果你想把它做成一个html表,那么我会jsut输出谎言你通常对一个表...例如你可能会这样做:
$rResult = mysql_query( $sQuery) or die();
$count = mysql_num_fields($rResult);
$html = '<table border="1"><thead><tr>%s</tr><thead><tbody>%s</tbody></table>';
$thead = '';
$tbody = '';
$line = '<tr>%s</tr>';
for ($i = 0; $i < $count; $i++){
$thead .= sprintf('<th>%s</th>',mysql_field_name($rResult, $i));
}
while(false !== ($row = mysql_fetch_row($rResult))){
$trow = '';
foreach($row as $value){
$trow .= sprintf('<td>%s</td>', $value);
}
$tbody .= sprintf($line, $trow);
}
header("Content-type: application/vnd.ms-excel; name='excel'");
header("Content-Disposition: attachment; filename=exportfile.xls");
header("Pragma: no-cache");
header("Expires: 0");
print sprintf($html, $thead, $tbody);
exit;
Run Code Online (Sandbox Code Playgroud)
您只获得一行,因为您使用的是没有GROUP BY子句的聚合函数.尝试添加一个GROUP BY将这些"条目"中的每一个与某个特定组相关联的内容,例如Lot_no您尝试报告的内容.
至于边界,你不能这样做CSV虽然Excel虽然readbale,实际上并不是一个Excel格式文件与所有额外的东西,如边框格式.要使用格式化等内容,您需要输出本机Excel或可以加载到Excel中的html表.看看phpexcel你是否需要这样做.