TypechoJoeTheme

至尊技术网

统计
登录
用户名
密码

ThinkPHP5+PhpSpreadsheet实现批量导出数据

2025-07-03
/
0 评论
/
2 阅读
/
正在检测是否收录...
07/03

1. 准备工作

首先,确保你的环境中已安装了ThinkPHP5和PhpSpreadsheet。如果未安装PhpSpreadsheet,可以通过Composer进行安装:

bash composer require phpoffice/phpspreadsheet

2. 创建数据模型

假设你已经有了一个数据库模型来存储文章的数据,这里我们用简单的示例数据:

php // 示例文章数据 $articles = [ ['title' => '文章标题1', 'keywords' => '关键词1', 'description' => '描述1', 'content' => '正文内容1...'], ['title' => '文章标题2', 'keywords' => '关键词2', 'description' => '描述2', 'content' => '正文内容2...'], // 更多文章... ];

3. 编写导出逻辑

创建一个新的控制器或在现有控制器中添加一个新的方法用于导出数据:

```php
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
use PhpOffice\PhpSpreadsheet\Style\Border;
use PhpOffice\PhpSpreadsheet\Style\Fill;
use think\Controller;
use think\Db;

class ExportController extends Controller {
public function exportMarkdown() {
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$rowNumber = 1;
$styleArray = [
'font' => ['bold' => true],
'alignment' => ['horizontal' => Alignment::HORIZONTALCENTER], 'borders' => [ 'top' => ['borderStyle' => Border::BORDERTHIN, 'color' => ['argb' => 'FF000000']],
'bottom' => ['borderStyle' => Border::BORDERTHIN, 'color' => ['argb' => 'FF000000']], ] ]; $fillArray = [ 'fill' => new Fill([ 'startColor' => ['argb' => 'FFCCCCCC'], // 浅灰色背景 'endColor' => ['argb' => 'FFCCCCCC'], // 浅灰色背景(实际上不使用结束颜色) ]) ]; // 应用于表头单元格的填充样式。 $sheet->getStyle('A1:D1')->applyFromArray($styleArray); // 设置表头样式并填充颜色。 $sheet->setCellValue('A1', '标题'); // 设置列名。 $sheet->setCellValue('B1', '关键词'); // 设置列名。 $sheet->setCellValue('C1', '描述'); // 设置列名。 $sheet->setCellValue('D1', '正文'); // 设置列名。 $rowNumber++; // 移动到下一行开始写数据。 foreach ($articles as $article) { // 遍历文章数据。 $sheet->getStyle('A' . $rowNumber . ':D' . $rowNumber)->applyFromArray($fillArray); // 对每行应用背景色。 $sheet->setCellValue('A' . $rowNumber, $article['title']); // 写标题。 $sheet->setCellValue('B' . $rowNumber, $article['keywords']); // 写关键词。 $sheet->setCellValue('C' . $rowNumber, $article['description']); // 写描述。 $content = mbsubstr($article['content'], 0, 1000) . '...'; // 取正文前1000字,并添加省略号。
$sheet->setCellValue('D' . $rowNumber, $content); // 写正文。
$rowNumber++; // 移动到下一行。 注:实际上这里已经完成了单篇Markdown文章的生成,但是我们将继续用于生成整个文件。} $writer = new Xlsx($spreadsheet); // 创建XLSX写入器。} return $writer->download('Markdown_Articles.xlsx'); // 导出文件。} } ```

朗读
赞(0)
版权属于:

至尊技术网

本文链接:

https://www.zzwws.cn/archives/31616/(转载时请注明本文出处及文章链接)

评论 (0)

人生倒计时

今日已经过去小时
这周已经过去
本月已经过去
今年已经过去个月

最新回复

  1. 强强强
    2025-04-07
  2. jesse
    2025-01-16
  3. sowxkkxwwk
    2024-11-20
  4. zpzscldkea
    2024-11-20
  5. bruvoaaiju
    2024-11-14

标签云