Laravel PHPExcel - 无法访问某些方法

时间:2018-02-08 13:44:14

标签: php laravel phpexcel laravel-excel

我正在尝试在Laravel中使用excel模板文件来创建新文件。我似乎无法调用某些方法并得到如下错误:

PHP Error:  Call to undefined method PHPExcel_Worksheet::cells()

我可以使用数据填充单元格,但似乎无法更改任何格式。

代码如下所示:

Excel::load(storage_path('templates/consolidatedInvoice.xlsx'), function($excel) use($name, $invoice, $customer, $imported){
        $excel->setActiveSheetIndex(0);
       // deal with dates
        $excel->getActiveSheet()
        ->setColumnFormat(array(
            'E3' => 'dd-mmm-yyyy'));
        $invDate = $invoice->ADPConsolidatedInvoice->importedInvoices->first();
        $excel->getActiveSheet()
              ->setCellValue('E3', $invDate->formattedInvoiceDate)
              ->setCellValue('E4', $invoice->invoice_number)

谁能告诉我我做错了什么?

1 个答案:

答案 0 :(得分:0)

PhpExcel已迁移到PhpSpreadsheet,不再包含方法setColumnFormat,而是可以执行以下操作:

$styleArray = array(
   'font' => array(
        'bold' => true,
    ),
    'alignment' => array(
        'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_RIGHT,
    ),
    'borders' => array(
        'top' => array(
            'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
        ),
    ),
    'fill' => array(
        'fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_GRADIENT_LINEAR,
        'rotation' => 90,
        'startColor' => array(
            'argb' => 'FFA0A0A0',
        ),
        'endColor' => array(
            'argb' => 'FFFFFFFF',
        ),
    ),
);
$excel->getActiveSheet()->getStyle("E3")->applyFromArray($styleArray);
//or individually
$excel->getActiveSheet()->getStyle("E3")->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1);

您可以在下一页上获得更多信息,并查看他们的github源代码,以了解您可以在Worksheet / Spreadsheet上调用哪些函数。 Official docs

编辑:对于您的特定情况,您可以使用

 $spreadsheet->getActiveSheet()->getStyle("E3")
 ->getNumberFormat()
 ->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_DATE_YYYYMMDDSLASH);

可以使用的日期的可用常量

enter image description here