我正在尝试 PHPExcel,当我执行脚本时,输出中出现错误:
致命错误:"中断"不在/opt/lampp/htdocs/Xlsphp/test/Classes/PHPExcel/Computing/Functions.php 第 581 行的"循环"或"切换"上下文中
我不知道我在PHP脚本中做错了什么。似乎一切都是正确的。
有人知道如何解决它吗?
这是我的PHP脚本:
<?php
require_once 'Classes/PHPExcel.php';
require_once 'config.php';
$sql = 'SELECT * FROM tablevalues';
$result = mysqli_query($conn, $sql) or die(mysqli_error($conn));
$fileName = 'test.xls';
// initialise excel column name
// currently limited to queries with less than 27 columns
$columnArray = array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");
// Instantiate a new PHPExcel object
$objPHPExcel = new PHPExcel();
// Set the active Excel worksheet to sheet 0
$objPHPExcel->setActiveSheetIndex(0);
// Initialise the Excel row number
$rowCount = 1;
// fetch result set column information
$finfo = mysqli_fetch_fields($result);
// initialise columnlenght counter
$columnlenght = 0;
foreach ($finfo as $val) {
// set column header values
$objPHPExcel->getActiveSheet()->SetCellValue($columnArray[$columnlenght++] . $rowCount, $val->name);
}
// make the column headers bold
$objPHPExcel->getActiveSheet()->getStyle($columnArray[0]."1:".$columnArray[$columnlenght]."1")->getFont()->setBold(true);
$rowCount++;
// Iterate through each result from the SQL query in turn
// We fetch each database result row into $row in turn
while ($row = mysqli_fetch_array($result, MYSQLI_NUM)) {
for ($i = 0; $i < $columnlenght; $i++) {
$objPHPExcel->getActiveSheet()->SetCellValue($columnArray[$i] . $rowCount, $row[$i]);
}
$rowCount++;
}
// set header information to force download
header('Content-type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="' . $fileName . '"');
// Instantiate a Writer to create an OfficeOpenXML Excel .xlsx file
// Write the Excel file to filename some_excel_file.xlsx in the current directory
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
// Write the Excel file to filename some_excel_file.xlsx in the current directory
$objWriter->save('php://output');
mysqli_close($conn);
?>
只需删除函数.php文件中的"break;"语句即可。由于中断是在返回语句之后,因此它给出了致命错误。
解决与第三方开源库不兼容问题的正确方法是:
- 检查是否有已发布的库的更新版本,您遇到问题
- 向库的维护者提交错误,如果您已经修复了带有修复的差异文件,或 git pull 请求
在您的情况下,只需从github下载PHPExcel,解压缩并覆盖旧库。
在下面使用另存为 excel 代码。这只是一个示例。根据您的要求修改它。
<?php
// Load the database configuration file
include 'connect.php';
// Filter the excel data
function filterData(&$str){
$str = preg_replace("/'t/", "''t", $str);
$str = preg_replace("/'r?'n/", "''n", $str);
if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"';
}
// Excel file name for download
$fileName = "members-data_" . date('d-m-Y') . ".xls";
$fields = array('column1','column2');
// Display column names as first row
$excelData = implode("'t", array_values($fields)) . "'n";
// Fetch records from database
$query = $link->query("SELECT * FROM tablename order by id desc");
if($query->num_rows > 0){
// Output each row of the data
while($row = $query->fetch_assoc()){
$status = ($row['statuse'] == 1)?'Active':'Inactive'; //Please create statuse column in your table giving tinyint as datatype and length/value=1 and in comments mention 1=Active | 0=Inactive
$lineData = array($row['value1'],$row['value2'],);
array_walk($lineData, 'filterData');
$excelData .= implode("'t", array_values($lineData)) . "'n";
}
}else{
$excelData .= 'No records found...'. "'n";
}
// Headers for download
header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename='"$fileName'"");
print chr(255) . chr(254).mb_convert_encoding($excelData, 'UTF-16LE', 'UTF-8');
// Render excel data
//echo $excelData;
exit;