插件窝 干货文章 php怎么转换成Excel

php怎么转换成Excel

文件 Excel 生成 PhpSpreadsheet 504    来源:    2025-03-16

将PHP数据转换为Excel文件可以通过多种方式实现。以下是几种常见的方法:

方法1:使用PHPExcel库(已停止维护,推荐使用PhpSpreadsheet)

PHPExcel是一个流行的库,用于生成和读取Excel文件。虽然它已经停止维护,但它的继任者PhpSpreadsheet仍然活跃。

步骤:

  1. 安装PhpSpreadsheet: 使用Composer安装PhpSpreadsheet:

    composer require phpoffice/phpspreadsheet
    
  2. 生成Excel文件: 以下是一个简单的示例,展示如何使用PhpSpreadsheet生成Excel文件:

    require 'vendor/autoload.php';
    
    use PhpOffice\PhpSpreadsheet\Spreadsheet;
    use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
    
    // 创建一个新的Spreadsheet对象
    $spreadsheet = new Spreadsheet();
    $sheet = $spreadsheet->getActiveSheet();
    
    // 设置单元格值
    $sheet->setCellValue('A1', 'Hello');
    $sheet->setCellValue('B1', 'World!');
    
    // 保存为Excel文件
    $writer = new Xlsx($spreadsheet);
    $writer->save('hello_world.xlsx');
    
    echo "Excel文件已生成!";
    

方法2:使用原生PHP生成CSV文件

如果你只需要生成简单的表格数据,可以使用PHP原生函数生成CSV文件,Excel可以直接打开CSV文件。

步骤:

  1. 生成CSV文件

    $data = [
       ['Name', 'Age', 'City'],
       ['John Doe', 28, 'New York'],
       ['Jane Smith', 34, 'Los Angeles'],
    ];
    
    $filename = 'data.csv';
    
    $file = fopen($filename, 'w');
    
    foreach ($data as $row) {
       fputcsv($file, $row);
    }
    
    fclose($file);
    
    echo "CSV文件已生成!";
    

方法3:使用第三方库(如Box/Spout)

Box/Spout是一个轻量级的库,专门用于读写Excel和CSV文件。

步骤:

  1. 安装Box/Spout: 使用Composer安装Box/Spout:

    composer require box/spout
    
  2. 生成Excel文件

    require 'vendor/autoload.php';
    
    use Box\Spout\Writer\Common\Creator\WriterEntityFactory;
    
    $writer = WriterEntityFactory::createXLSXWriter();
    $writer->openToFile('example.xlsx');
    
    $rows = [
       WriterEntityFactory::createRowFromArray(['Name', 'Age', 'City']),
       WriterEntityFactory::createRowFromArray(['John Doe', 28, 'New York']),
       WriterEntityFactory::createRowFromArray(['Jane Smith', 34, 'Los Angeles']),
    ];
    
    $writer->addRows($rows);
    $writer->close();
    
    echo "Excel文件已生成!";
    

方法4:使用PHP的header函数直接输出Excel文件

如果你希望直接在浏览器中下载Excel文件,可以使用PHP的header函数。

步骤:

  1. 生成Excel文件并输出

    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment; filename="example.xls"');
    
    echo "Name\tAge\tCity\n";
    echo "John Doe\t28\tNew York\n";
    echo "Jane Smith\t34\tLos Angeles\n";
    

总结

  • PhpSpreadsheet:功能强大,适合复杂的Excel操作。
  • CSV:简单易用,适合简单的表格数据。
  • Box/Spout:轻量级,适合读写Excel和CSV文件。
  • 直接输出:适合直接在浏览器中下载Excel文件。

根据你的需求选择合适的方法。