php---excel

在 PHP 中导出 Excel 文件可以使用多种库,其中最流行的是 PhpSpreadsheet。这个库是由 PHPExcel 演变而来的,功能强大且适用于各种 Excel 操作。

下面是一个简单的示例,展示如何使用 PhpSpreadsheet 库来创建和导出一个 Excel 文件。

1. 安装 PhpSpreadsheet

首先,使用 Composer 安装 PhpSpreadsheet 库。如果你还没有安装 Composer,你需要先安装它。然后在你的项目目录中运行以下命令:

composer require phpoffice/phpspreadsheet

2. 创建并导出 Excel 文件

接下来,在你的 PHP 文件中使用 PhpSpreadsheet 创建和导出一个 Excel 文件。以下是一个示例代码:

 
<?php

require 'vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

// 创建一个新的电子表格对象
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();

// 设置单元格的值
$sheet->setCellValue('A1', 'Hello');
$sheet->setCellValue('B1', 'World!');

// 如果有更多数据,可以用循环设置单元格的值
$data = [
    ['Name', 'Age', 'Email'],
    ['John Doe', 28, 'john@example.com'],
    ['Jane Smith', 32, 'jane@example.com'],
];

$row = 1;
foreach ($data as $rowData) {
    $col = 'A';
    foreach ($rowData as $cellData) {
        $sheet->setCellValue($col . $row, $cellData);
        $col++;
    }
    $row++;
}

// 将电子表格保存为文件
$writer = new Xlsx($spreadsheet);
$filename = 'example.xlsx';

// 将文件保存到服务器
$writer->save($filename);

// 或者直接输出到浏览器进行下载
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="' . $filename . '"');
header('Cache-Control: max-age=0');

$writer->save('php://output');
exit;

3. 解释代码

  • require 'vendor/autoload.php';:加载 Composer 自动加载文件。
  • use PhpOffice\PhpSpreadsheet\Spreadsheet; 和 use PhpOffice\PhpSpreadsheet\Writer\Xlsx;:导入必要的类。
  • new Spreadsheet();:创建一个新的电子表格对象。
  • getActiveSheet():获取当前活跃的工作表。
  • setCellValue('A1', 'Hello');:设置单元格的值。
  • 使用循环将数组中的数据写入电子表格。
  • new Xlsx($spreadsheet);:创建一个 Xlsx 写入器。
  • save($filename);:将文件保存到服务器。
  • 如果希望用户下载文件,设置相应的 HTTP 头,并将文件内容输出到浏览器。

这样,你就可以轻松地使用 PHP 将数据导出到 Excel 文件中并提供下载了。

除了使用 PhpSpreadsheet 库,导出 Excel 文件的其他方法包括使用一些更简单的、特定场景下的方法,例如生成 CSV 文件或使用旧版的 PHPExcel 库(尽管它已经不再维护)。下面介绍几种方法:

1. 生成 CSV 文件

CSV(Comma-Separated Values)文件是一种简单且广泛支持的格式,可以用 Excel 打开。以下是一个示例,展示如何生成并下载 CSV 文件:

 

<?php

header('Content-Type: text/csv');
header('Content-Disposition: attachment;filename="example.csv"');

$output = fopen('php://output', 'w');

// 写入 CSV 文件的头部
fputcsv($output, ['Name', 'Age', 'Email']);

// 写入数据
$data = [
    ['John Doe', 28, 'john@example.com'],
    ['Jane Smith', 32, 'jane@example.com'],
];

foreach ($data as $row) {
    fputcsv($output, $row);
}

fclose($output);
exit;

2. 使用旧版 PHPExcel 库

虽然 PHPExcel 已经被 PhpSpreadsheet 取代,但如果你已经在使用 PHPExcel 或者项目中依赖它,也可以继续使用。确保你已经安装了 PHPExcel,可以通过 Composer 或其他方式安装。

以下是一个使用 PHPExcel 的示例:

 
<?php

require 'path/to/PHPExcel.php';

// 创建一个新的 PHPExcel 对象
$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);

// 设置单元格的值
$objPHPExcel->getActiveSheet()->setCellValue('A1', 'Hello');
$objPHPExcel->getActiveSheet()->setCellValue('B1', 'World!');

// 如果有更多数据,可以用循环设置单元格的值
$data = [
    ['Name', 'Age', 'Email'],
    ['John Doe', 28, 'john@example.com'],
    ['Jane Smith', 32, 'jane@example.com'],
];

$row = 1;
foreach ($data as $rowData) {
    $col = 'A';
    foreach ($rowData as $cellData) {
        $objPHPExcel->getActiveSheet()->setCellValue($col . $row, $cellData);
        $col++;
    }
    $row++;
}

// 将电子表格保存为文件
$filename = 'example.xlsx';
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="' . $filename . '"');
header('Cache-Control: max-age=0');

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
exit;

3. 使用 SimpleXLSXGen 库

SimpleXLSXGen 是一个轻量级的库,用于生成 XLSX 文件,非常简单易用。你可以从 GitHub 上获取它,并将其包含到你的项目中。

 
<?php

require_once 'SimpleXLSXGen.php';

$data = [
    ['Name', 'Age', 'Email'],
    ['John Doe', 28, 'john@example.com'],
    ['Jane Smith', 32, 'jane@example.com'],
];

$xlsx = SimpleXLSXGen::fromArray($data);
$xlsx->downloadAs('example.xlsx');  // 或者 $xlsx->saveAs('example.xlsx');

4. 使用 Spreadsheet_Excel_Writer 库

Spreadsheet_Excel_Writer 是另一个用于生成 Excel 文件的 PHP 库。虽然它生成的是较老版本的 .xls 文件,但在某些情况下也非常有用。

 
<?php

require_once 'Spreadsheet/Excel/Writer.php';

// 创建一个新的工作簿
$workbook = new Spreadsheet_Excel_Writer();

// 添加一个工作表
$worksheet =& $workbook->addWorksheet('Sheet1');

// 写入数据
$worksheet->write(0, 0, 'Name');
$worksheet->write(0, 1, 'Age');
$worksheet->write(0, 2, 'Email');

$data = [
    ['John Doe', 28, 'john@example.com'],
    ['Jane Smith', 32, 'jane@example.com'],
];

$row = 1;
foreach ($data as $rowData) {
    $col = 0;
    foreach ($rowData as $cellData) {
        $worksheet->write($row, $col, $cellData);
        $col++;
    }
    $row++;
}

// 将工作簿保存为文件
$workbook->send('example.xls');
$workbook->close();

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值