IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> TP6框架下PHPExcel 导出多个表格并输出压缩文件 -> 正文阅读

[PHP知识库]TP6框架下PHPExcel 导出多个表格并输出压缩文件

引入phpexcel包,建议使用composer导入。

$ composer require phpoffice/phpspreadsheet

以下为代码示例:

注意:生成的中文excel文件在代码读取时是否乱码

<?php
namespace app\controller;

use app\BaseController;
use think\facade\Db;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

class Index extends BaseController
{
    public function index()
    {
    	//查询所有的省份数据
		$list = Db::table('region')->where('level', 1)->select();
		
		foreach ($list as $key => $val) {
			//查询省份下的城市数据
	        $all_city = Db::table('region')->where('pid', $val["id"])->select();

	        $objPHPExcel = new Spreadsheet();//创建Excel文件对象
	      
	        $objPHPExcel->setActiveSheetIndex(0)
	            ->setCellValue('A1', 'ID')
	            ->setCellValue('B1', '城市名称')
	            ->setCellValue('C1', '中文全拼');

	        //插入表格数据
	        $i = 2;
	        foreach ($all_city as $k => $vo) {
	            $objPHPExcel->setActiveSheetIndex(0)
	                ->setCellValue('A' . $i, $k+1)
	                ->setCellValue('B' . $i, $vo['name'])
	                ->setCellValue('C' . $i, $vo['pinyin']);
	            $i++;
	        }
	       
	        $objPHPExcel->setActiveSheetIndex(0);

	        //保存Excel格式文件,保存路径为当前路径
	        $filename = $val["name"] . '.xlsx';
	        $fileNameArr[] = $filename;
	        $objWriter = new Xlsx($objPHPExcel);
	        $objWriter->save($filename);
	    }

	    //进行多个文件压缩
	    $zip = new \ZipArchive();
	    $filename = "各省城市数据.zip";
	    $zip->open($filename, \ZipArchive::CREATE | \ZipArchive::OVERWRITE);//打开压缩包

	    //向压缩包中添加文件
	    foreach ($fileNameArr as $file) {
	        $a = $zip->addFromString($file,file_get_contents($file));
	    }

	    $zip->close();//关闭压缩包
	    foreach ($fileNameArr as $file) {
	        unlink($file); //删除csv临时文件
	    }

	    //输出压缩文件提供下载
	    header("Cache-Control: max-age=0");
	    header("Content-Description: File Transfer");
	    header('Content-disposition: attachment; filename='.$filename); // 文件名
	    header("Content-Type: application/zip"); // zip格式的
	    header("Content-Transfer-Encoding: binary");
	    header('Content-Length: '.filesize($filename));
	    ob_clean();
	    flush();
	    readfile($filename);//输出文件;
	    unlink($filename); //删除压缩包临时文件
    }
}

实测有效。

以下为导出的压缩包截图

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-11-09 19:14:44  更:2021-11-09 19:15:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 13:46:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计