我是 PHPexcel 的新手,试图从我的数据库中获取数据并在它自己的列中打印 id 和 title 值,但现在它只是像这样打印它,我希望每个值都在每个单元格中:
这是 excel 的样子:
代码:
<?php
error_reporting(E_ALL);
$username="root";
$password="";
$database="nih_bw";
$sqlsrv="localhost";
date_default_timezone_set('US/Central');
$currenttime=date("m-d-Y");
require_once '../Classes/PHPExcel.php';
$objPHPExcel = new PHPExcel();
$objPHPExcel->getProperties();
function num2alpha($n)
{
for($r = ""; $n >= 0; $n = intval($n / 26) - 1)
$r = chr($n%26 + 0x41) . $r;
return $r;
}
$viewinv = mysql_connect($sqlsrv,$username,$password);
if (!$viewinv) { die('Could not connect to SQL server. Contact administrator.'); }
mysql_select_db($database, $viewinv) or die('Could not connect to database. Contact administrator.');
$query = "select id, title from measurements;";
$result = mysql_query($query);
if ($result = mysql_query($query) or die(mysql_error())) {
$objPHPExcel = new PHPExcel();
$objPHPExcel->getActiveSheet()->setTitle('CYImport'.$currenttime.'');
$rowNumber = 1;
$headings = array('id','Title');
$objPHPExcel->getActiveSheet()->fromArray(array($headings),NULL,'A'.$rowNumber);
$rowNumber++;
while ($row = mysql_fetch_row($result)) {
$col = '0';
foreach($row as $cell) {
$objPHPExcel->getActiveSheet()->setCellValue(num2alpha($col).$rowNumber,$cell);
$col++;
}
$rowNumber++;
}
$objWriter = new PHPExcel_Writer_CSV($objPHPExcel);
$objWriter->setDelimiter("\t");
$objWriter->setEnclosure('');
$objWriter->setLineEnding("\r\n");
$objWriter->setSheetIndex(0);
$objWriter->save('blah '.$currenttime.'.csv');
header('Content-type: text/csv');
header('Content-Disposition: attachment;filename="CY Import '.$currenttime.'"..csv"');
header('Cache-Control: max-age=0');
$objWriter->save('php://output');
exit();
}
echo 'Contact your Administrator. No data received from server.';
?>
最佳答案
问题是,如果您使用 setCellValue,$col 必须是一个字符 - 要使用数字,您可以使用 setCellValueByColumnAndRow,例如:-
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col,$rowNumber,$cell);
或者,您可以使用以下函数将 $col 转换为字符:-
function num2alpha($n)
{
for($r = ""; $n >= 0; $n = intval($n / 26) - 1)
$r = chr($n%26 + 0x41) . $r;
return $r;
}
然后像以前一样调用它:-
$col = 0;
foreach($row as $cell) {
$objPHPExcel->getActiveSheet()->setCellValue(num2alpha($col).$rowNumber,$cell);
$col++;
}
$rowNumber++;
关于PHPExcel在列和单元格中打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23311715/