我正在尝试使用PHPExcel将我的数据从MySQL分离到excel文件。我希望数据按行分隔。
例如,
Detail1 Response1 Status1
详细2响应2状态2
详情3响应3状态3
数据的分隔符为 || ,每行的分隔符为 ::
这是我的代码:
<?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查询来创建分隔符,我的数据现在放在行中。
现在,我想要的是将它们与分隔符“||”分开。你能帮帮我吗?
以下是我的问题:
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
答案 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;
}