PHPExcel:使用 PHP 数组从数组中设置列名
PHPExcel: Set Column Names fromArray using PHP array
我正在使用 PHPExcel 库将数据导出到 excel。我能够按预期将所有数据获取到 excel。但是如何设置 PHP 数组中的列名。这是我正在使用的代码。请帮助
$data=(
array(10) (
[0] => array(8) (
[#] => (string)
[Name] => (string) Student1
[ID] => (string) 123456
[Date] => (string) 2016-02-01
[Group] => (string) Physics
[Month] => (string) February
[Year] => (string) 2016
)
[1] => array(8) (
[#] => (string)
[Name] => (string) Student2
[ID] => (string) 569874
[Date] => (string) 2016-02-01
[Group] => (string) Biology
[Month] => (string) February
[Year] => (string) 2016......);
$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->setCellValue('A1', "#");
$objPHPExcel->getActiveSheet()->setCellValue('B1', "Name");
$objPHPExcel->getActiveSheet()->setCellValue('C1', "ID");
$objPHPExcel->getActiveSheet()->setCellValue('D1', "Date");
$objPHPExcel->getActiveSheet()->setCellValue('E1', "Group");
$objPHPExcel->getActiveSheet()->setCellValue('F1', "Month");
$objPHPExcel->getActiveSheet()->setCellValue('G1', "Year");
//如何replace/make上面的动态行根据数组数据作为列名设置第一行的单元格值。即姓名、身份证、日期……
//Add Data
$objPHPExcel->getActiveSheet()->fromArray($data,NULL,'A2');
像这样?
$objPHPExcel->getActiveSheet()->fromArray(array_keys($data[0]),NULL,'A2');
现在我知道这就是你想要做的,简短的解释一下。
Array_keys 将数组中的所有键作为值复制到编号数组中,因此如果您有这样的数组:
[#] => (string)
[Name] => (string) Student1
[ID] => (string) 123456
[Date] => (string) 2016-02-01
[Group] => (string) Physics
[Month] => (string) February
[Year] => (string) 2016
它将return跟随数组:
[0] = "#"
[1] = "Name"
[2] = "ID"
...
// Header
$objPHPExcel->getActiveSheet()->fromArray(array_keys(current($data)), null, 'A1');
// Data
$objPHPExcel->getActiveSheet()->fromArray($data, null, 'A2');
此代码从数组生成列
class excelExport {
public $columns = array(
0 => array('id' => "name", 'name' => 'Name'),
1 => array('id' => "tlf", 'name' => 'Telephone'),
);
public function export(){
/** PHPExcel */
$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);
$objWorkSheet = $objPHPExcel->getActiveSheet();
$row = 1;
$col = 0;
for ($column = 'A'; ord($column) != ord('A')+count($this->columns); $column++) {
$cell = $objWorkSheet->getCell($column.$row);
$cell->setValue($this->columns[$col]["name"]);
$col++;
}
...
我正在使用 PHPExcel 库将数据导出到 excel。我能够按预期将所有数据获取到 excel。但是如何设置 PHP 数组中的列名。这是我正在使用的代码。请帮助
$data=(
array(10) (
[0] => array(8) (
[#] => (string)
[Name] => (string) Student1
[ID] => (string) 123456
[Date] => (string) 2016-02-01
[Group] => (string) Physics
[Month] => (string) February
[Year] => (string) 2016
)
[1] => array(8) (
[#] => (string)
[Name] => (string) Student2
[ID] => (string) 569874
[Date] => (string) 2016-02-01
[Group] => (string) Biology
[Month] => (string) February
[Year] => (string) 2016......);
$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);
$objPHPExcel->getActiveSheet()->setCellValue('A1', "#");
$objPHPExcel->getActiveSheet()->setCellValue('B1', "Name");
$objPHPExcel->getActiveSheet()->setCellValue('C1', "ID");
$objPHPExcel->getActiveSheet()->setCellValue('D1', "Date");
$objPHPExcel->getActiveSheet()->setCellValue('E1', "Group");
$objPHPExcel->getActiveSheet()->setCellValue('F1', "Month");
$objPHPExcel->getActiveSheet()->setCellValue('G1', "Year");
//如何replace/make上面的动态行根据数组数据作为列名设置第一行的单元格值。即姓名、身份证、日期……
//Add Data
$objPHPExcel->getActiveSheet()->fromArray($data,NULL,'A2');
像这样?
$objPHPExcel->getActiveSheet()->fromArray(array_keys($data[0]),NULL,'A2');
现在我知道这就是你想要做的,简短的解释一下。
Array_keys 将数组中的所有键作为值复制到编号数组中,因此如果您有这样的数组:
[#] => (string)
[Name] => (string) Student1
[ID] => (string) 123456
[Date] => (string) 2016-02-01
[Group] => (string) Physics
[Month] => (string) February
[Year] => (string) 2016
它将return跟随数组:
[0] = "#"
[1] = "Name"
[2] = "ID"
...
// Header
$objPHPExcel->getActiveSheet()->fromArray(array_keys(current($data)), null, 'A1');
// Data
$objPHPExcel->getActiveSheet()->fromArray($data, null, 'A2');
此代码从数组生成列
class excelExport {
public $columns = array(
0 => array('id' => "name", 'name' => 'Name'),
1 => array('id' => "tlf", 'name' => 'Telephone'),
);
public function export(){
/** PHPExcel */
$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);
$objWorkSheet = $objPHPExcel->getActiveSheet();
$row = 1;
$col = 0;
for ($column = 'A'; ord($column) != ord('A')+count($this->columns); $column++) {
$cell = $objWorkSheet->getCell($column.$row);
$cell->setValue($this->columns[$col]["name"]);
$col++;
}
...