2014-04-26 41 views
1

我是PHPexcel的新手,試圖從我的數據庫中獲取數據並在其自己的列中打印id和title值,但現在它只是像這樣打印它,我希望每個值都在每個單元:PHPExcel在列和單元格中打印

這是Excel如何看起來:

enter image description here

代碼:

<?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.'; 

?> 
+0

而不是你的'num2alpha的()',可以考慮使用PHPExcel的內置'PHPExcel_Cell :: stringFromColumnIndex()'方法 –

+0

但是爲什麼你設置分隔符爲CSV到''''?並將外殼添加到'''''這是您問題的可能原因:如果您必須更改分隔符,至少應將其更改爲有效的字符,如'\ t「,它仍然是生成的文件加載到MS Excel時識別 –

+0

將其更改爲「\ t」,請參閱編輯。這是它的外觀。在一個單元格中。我希望它把id放在一列中,並在另一列中標題。 https://www.dropbox.com/s/y9fk125v1z34gzs/howitlooks.png – user3270211

回答

3

的問題是,$關口已經是一個CHARAC之三,如果你使用setCellValue - 使用一個號碼,您可以使用setCellValueByColumnAndRow代替,例如: -

$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col,$rowNumber,$cell); 

另外,您可以$山坳使用下面的函數轉換成字符: -

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++; 
+0

謝謝,這工作。但是現在我沒有在excel中獲得id。只有標題。 – user3270211

+0

你還在循環之前設置$ col ='A'嗎?如果是這樣,然後將其設置爲0 –

+0

我已更新我的代碼,將其更改爲0.但我想打印它自己的列中的id值和它自己的標題值。在左側它現在看起來如何,右側顯示我希望它看起來如何:https://www.dropbox.com/s/mi7becx85610rln/howIwant.png – user3270211