使用PHPExcel

时间:2018-05-26 07:25:49

标签: php mysql substring phpexcel

我正在尝试使用PHPExcel将我的数据从MySQL分离到excel文件。我希望数据按行分隔。
例如,
Detail1 Response1 Status1
详细2响应2状态2
详情3响应3状态3

数据的分隔符为 || ,每行的分隔符为 ::

以下是数据enter image description here

这是我的代码:

<?php 


try {

$sql = "SELECT ID,DESCRIPTION FROM SAMPLE";


} catch (Exception $ex) {
          echo 'Message: ' .$ex->getMessage();
  }  

   $connect = @mysql_connect($dbhost, $dbuser, $dbpass) 

or die("Couldn't connect to MySQL:<br>" . mysql_error() . "<br>" . mysql_errno()); 
//select database 
$Db = @mysql_select_db($dbname, $connect) 
or die("Couldn't select database:<br>" . mysql_error(). "<br>" . mysql_errno()); 
//execute query 
$result = @mysql_query($sql,$connect) 
or die("Couldn't execute query:<br>" . mysql_error(). "<br>" . mysql_errno()); 

error_reporting(E_ALL);


require_once 'Classes/PHPExcel.php';

// Execute the database query
// Instantiate a new PHPExcel object 
$objPHPExcel = new PHPExcel();  
// Set the active Excel worksheet to sheet 0 
$objPHPExcel->setActiveSheetIndex(0); 

$rowCount = 2;


$objPHPExcel->getActiveSheet()->setCellValue('A1', 'ID');
$objPHPExcel->getActiveSheet()->setCellValue('B1', 'DESCRIPTION');

 while($row = mysql_fetch_array($result)){  

$objPHPExcel->getActiveSheet()->SetCellValue('A'.$rowCount, $row['ID']);
$objPHPExcel->getActiveSheet()->SetCellValue('B'.$rowCount, $row['DESCRIPTION']);

    }


header('Content-Type: application/vnd.ms-excel'); 
header('Content-Disposition: attachment;filename="SampleExcel.xls"'); 
header('Cache-Control: max-age=0'); 
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); 
$objWriter->save('php://output');

?>

更新

我现在在如何处理我的问题上取得了进展:)我已经使用MySQL查询来创建分隔符,我的数据现在放在行中。

结果 enter image description here

现在,我想要的是将它们与分隔符“||”分开。你能帮帮我吗?

以下是我的问题:

SELECT SUBSTRING_INDEX(SELECT sample.id, SUBSTRING_INDEX(SUBSTRING_INDEX(sample.DESCRIPTION, '::', numbers.n), '::', -1) as name FROM numbers INNER JOIN sample ON CHAR_LENGTH(sample.DESCRIPTION) -CHAR_LENGTH(REPLACE(sample.DESCRIPTION, '::', ''))>=numbers.n-1,'||'-2) as string

1 个答案:

答案 0 :(得分:0)

我无法看到您在哪里递增变量$rowCount

你应该在你的while循环中写下++$rowCount;

while($row = mysql_fetch_array($result)) {  
$objPHPExcel->getActiveSheet()->SetCellValue('A'.$rowCount, $row['ID']);
$objPHPExcel->getActiveSheet()->SetCellValue('B'.$rowCount, $row['DESCRIPTION']);

++$rowCount;
}