【问题标题】:Exporting data to excel (multiple sheets) using php使用php将数据导出到excel(多张表)
【发布时间】:2014-03-18 09:02:49
【问题描述】:

我正在尝试使用this PHP Class 将数据导出到 Excel,到目前为止一切正常,并且正在生成导出。但是现在我有了一个新的需求,那就是在一个 excel 文件中生成多张工作表。

例如,如果我有两个数组,我希望它们都位于不同的工作表上。

$myarray1 =  array (
       1 => array ("Oliver", "Peter", "Paul"),
            array ("Marlene", "Mica", "Lina")
    );

$myarray2 =  array (
       1 => array ("Oliver", "Peter", "Paul"),
            array ("Marlene", "Mica", "Lina")
    );

目前两个数组都导出在一张纸上

$xls = new Excel_XML;
$xls->addArray ( $myarray );
$xls->addArray ( $myarray2 );
$xls->generateXML ( "testfile" );

我想知道是否有人以前尝试过并且能够实现它,我将不胜感激。

【问题讨论】:

    标签: php export-to-excel


    【解决方案1】:

    我建议你使用 PHPExcel 库。支持多种格式,可以进行可视化格式化,并且易于使用。 您可以在他们的网页上找到更多信息:http://phpexcel.codeplex.com/

    当然,您可以做更多事情,阅读 excel 文件、设置视觉样式、创建绘图、表达式等等。

    你甚至可以使用 fgetcsv http://php.net/manual/en/function.fgetcsv.php

    【讨论】:

    • 是的,我确实经历过,问题是当前的导出类在整个系统中被大量使用,将其更改为新类将非常耗时
    【解决方案2】:

    这个例子使用 PHPExcel

    function exportToExcelsheets($data, $fileName){
        /* Create new PHPExcel object*/
        $objPHPExcel = new PHPExcel();
        $sheet_index = 0;
        foreach ($data as $s=>$sheet){
            /* Create a first sheet, representing sales data*/
            $alpha = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','V','W','X','Y','Z'];
            $objPHPExcel->setActiveSheetIndex($sheet_index);
            $head_keys = array_keys($sheet[0]);
            foreach ($head_keys as $a=>$headval){
                $objPHPExcel->getActiveSheet()->setCellValue($alpha[$a].'1', $headval);
            }
            $i=2;
            foreach($sheet as $row) {
                $index = 0;
                foreach ($row as $v=>$value){
                    $value =  isset($value)?$value:'';
                    $objPHPExcel->getActiveSheet()->setCellValue($alpha[$index].$i,$value);
                    $index++;
                }
                $i++;
            }
            /*Rename sheet*/
            $objPHPExcel->getActiveSheet()->setTitle('sheet_'.$s);
            /* Create a new worksheet, after the default sheet*/
            $objPHPExcel->createSheet();
            $sheet_index++;
        }
    
        /* Redirect output to a client’s web browser (Excel5)*/
        header('Content-Type: application/vnd.ms-excel');
        header("Content-Disposition: attachment; filename=\"$fileName\"");
        header('Cache-Control: max-age=0');
        //$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
        //$objWriter->save('php://output');
        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
        $objWriter->save('php://output');
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-15
      • 1970-01-01
      相关资源
      最近更新 更多