将 php 数组数据导出到 excel
Export php array data into excel
我正在尝试使用 php 将我的数组结果导出到 excel excel.I 想将此数据放入基于多张表的数组中。例如:在数组中,person_mast、person_ex 应该是 sheet1 和 sheet2,它们各自的数组应该以数组键作为列标题,数组值作为 excel 中多行的数据文件。
问题:
Not able to loop through array and put values in cells.
我的阵列:
Array
(
[person_mast] => Array
(
[0] => Array
(
[details_id] => 10470
[head_id] => 1
[recdate] => 2011-02-23 00:00:00
)
[1] => Array
(
[details_id] => 38708
[head_id] => 1
[recdate] =>
)
)
[person_ex] => Array
(
[0] => Array
(
[details_id] => 9842
[head_id] => 19
[visit_dt] => 2014-08-07 00:00:00
[addinfo] => abc
)
[1] => Array
(
[details_id] => 10234
[head_id] => 20
[visit_dt] => 2007-11-20 00:00:00
[addinfo] => 3 3
)
)
)
我的代码:
$filename = "report_".date('Ymd_His').".xls";
// Create new PHPExcel object
$objPHPExcel = new PHPExcel();
$sheet_count = '0';
foreach($patient_result as $tb_name => $tb_data){
$sheetname = $tb_name ;
if($sheet_count != '0'){
// Create a new worksheet, after the default sheet
$objPHPExcel->createSheet();
}
// Create a first sheet, representing sales data
$objPHPExcel->setActiveSheetIndex($sheet_count);
$column_count = 0;
foreach($tb_data as $key => $curr_data){
foreach($curr_data as $colname => $data){
//echo "<br>colname : ".$colname;
$objPHPExcel->getActiveSheet()->setCellValue($colname.$key, $data);
$column_count ++;
}
}
// Rename sheet
$objPHPExcel->getActiveSheet()->setTitle($sheetname);
$sheet_count++;
预期 Excel 文件格式:
Sheet 数字必须是整数,递增运算符仅适用于 int val。必须定义 header 部分(每个 sheet 的列名)并且需要传递 sheet 数字来填充当前正在循环的数据。
只要输入这段代码,它就会 100% 有效
$objPHPExcel = new PHPExcel();
$filename = "report_".date('Ymd_His').".xls";
$sheet_title = array('person_mast','person_ex');
$sheet_count = 0;
foreach($patient_result as $tb_name => $tb_data){
$sheet = $objPHPExcel->createSheet($sheet_count);
$header_key = array_keys($tb_data[0]);
$header = array($header_key[0], $header_key[1], $header_key[2]);
$list = array ($header);
//$this->excel->setActiveSheetIndex($sheet_count);
$sheet->setTitle($sheet_title[$sheet_count]);
$tmp_row = array();
foreach($tb_data as $key => $curr_data){
//echo '<pre>'; print_r( $curr_data); exit;
$list[] = $curr_data;
}
$sheet->fromArray($list);
$sheet_count++; //break;
}
header('Content-Type: application/vnd.ms-excel');
//tell browser what's the file name
header('Content-Disposition: attachment;filename="' . $filename . '"');
header('Cache-Control: max-age=0'); //no cache
//save it to Excel5 format (excel 2003 .XLS file), change this to 'Excel2007' (and adjust the filename extension, also the header mime type)
//if you want to save it as .XLSX Excel 2007 format
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
//force user to download the Excel file without writing it to server's HD
//$objWriter->save('php://output');
$objWriter->save($filename);
我正在尝试使用 php 将我的数组结果导出到 excel excel.I 想将此数据放入基于多张表的数组中。例如:在数组中,person_mast、person_ex 应该是 sheet1 和 sheet2,它们各自的数组应该以数组键作为列标题,数组值作为 excel 中多行的数据文件。
问题:
Not able to loop through array and put values in cells.
我的阵列:
Array
(
[person_mast] => Array
(
[0] => Array
(
[details_id] => 10470
[head_id] => 1
[recdate] => 2011-02-23 00:00:00
)
[1] => Array
(
[details_id] => 38708
[head_id] => 1
[recdate] =>
)
)
[person_ex] => Array
(
[0] => Array
(
[details_id] => 9842
[head_id] => 19
[visit_dt] => 2014-08-07 00:00:00
[addinfo] => abc
)
[1] => Array
(
[details_id] => 10234
[head_id] => 20
[visit_dt] => 2007-11-20 00:00:00
[addinfo] => 3 3
)
)
)
我的代码:
$filename = "report_".date('Ymd_His').".xls";
// Create new PHPExcel object
$objPHPExcel = new PHPExcel();
$sheet_count = '0';
foreach($patient_result as $tb_name => $tb_data){
$sheetname = $tb_name ;
if($sheet_count != '0'){
// Create a new worksheet, after the default sheet
$objPHPExcel->createSheet();
}
// Create a first sheet, representing sales data
$objPHPExcel->setActiveSheetIndex($sheet_count);
$column_count = 0;
foreach($tb_data as $key => $curr_data){
foreach($curr_data as $colname => $data){
//echo "<br>colname : ".$colname;
$objPHPExcel->getActiveSheet()->setCellValue($colname.$key, $data);
$column_count ++;
}
}
// Rename sheet
$objPHPExcel->getActiveSheet()->setTitle($sheetname);
$sheet_count++;
预期 Excel 文件格式:
Sheet 数字必须是整数,递增运算符仅适用于 int val。必须定义 header 部分(每个 sheet 的列名)并且需要传递 sheet 数字来填充当前正在循环的数据。
只要输入这段代码,它就会 100% 有效
$objPHPExcel = new PHPExcel();
$filename = "report_".date('Ymd_His').".xls";
$sheet_title = array('person_mast','person_ex');
$sheet_count = 0;
foreach($patient_result as $tb_name => $tb_data){
$sheet = $objPHPExcel->createSheet($sheet_count);
$header_key = array_keys($tb_data[0]);
$header = array($header_key[0], $header_key[1], $header_key[2]);
$list = array ($header);
//$this->excel->setActiveSheetIndex($sheet_count);
$sheet->setTitle($sheet_title[$sheet_count]);
$tmp_row = array();
foreach($tb_data as $key => $curr_data){
//echo '<pre>'; print_r( $curr_data); exit;
$list[] = $curr_data;
}
$sheet->fromArray($list);
$sheet_count++; //break;
}
header('Content-Type: application/vnd.ms-excel');
//tell browser what's the file name
header('Content-Disposition: attachment;filename="' . $filename . '"');
header('Cache-Control: max-age=0'); //no cache
//save it to Excel5 format (excel 2003 .XLS file), change this to 'Excel2007' (and adjust the filename extension, also the header mime type)
//if you want to save it as .XLSX Excel 2007 format
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
//force user to download the Excel file without writing it to server's HD
//$objWriter->save('php://output');
$objWriter->save($filename);