用 PHP 处理 Excel

以下是关于如何使用PHPExcel的备忘录。

填充

    • PHPExcelの新バージョンとしてPhpSpreadsheetが出ているようです。

 

    • PhpSpreadsheetでもメモリの問題はあるようで、メモリ消費の少ないPHP_XLSXWriterというのもあるみたいです。

 

    • php-excel-writer-performance-comparison

性能ならLibXL PHP LICENSE

安装

composer require phpoffice/phpexcel

基本使用示例

以下的列和行指定方式似乎比指定类似B5等的单元格位置的方法更方便。

// Set cell B5 with a string value
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(1, 5, 'PHPExcel');

内存设置

使用PHPExcel时,由于其占用大量内存,建议事先进行以下设置。

// ファイルキャッシュに変更(遅くなるがメモリを大幅に減少)
PHPExcel_Settings::setCacheStorageMethod(PHPExcel_CachedObjectStorageFactory::cache_to_discISAM, ['dir' => '/tmp']);

总结

// Excel作成
PHPExcel_Settings::setCacheStorageMethod(
    PHPExcel_CachedObjectStorageFactory::cache_to_discISAM,
    ['dir' => '/tmp']
);
$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);
$objSheet = $objPHPExcel->getActiveSheet();

$xlsx_data = [
    ['A1', 'B1', 'C1'],
    ['A2', 'B2', 'C1'],
];

foreach ($xlsx_data as $row_index => $row_data)
{
    foreach ($row_data as $column_index => $column_data)
    {
        $objSheet->setCellValueByColumnAndRow($column_index, $row_index + 1, $column_data);
    }
}

$current_datetime = new DateTimeImmutable(date('Y-m-d H:i:s'));
$file_name = 'test_' . $current_datetime->format('YmdHis') . '.xlsx';
$file_path = '/home/public/app/tmp/' . $file_name;

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save($file_path);

请参阅或查阅中文母语的以下内容,并仅提供一个选项:

请提供一个原文以便翻译成中文。

bannerAds