php中简单实现excel下载功能
来源:互联网 发布:js验证手机号码格式 编辑:程序博客网 时间:2024/05/29 15:13
项目中经常有报表下载的需求,用传统的phpexcel等太重,因此写了个简单的scv下载导出功能。
1、实现代码
<?phpclass CsvExport { private static $instance; private $fileName; private $charset; private $title = []; private $data = []; private $prepared = FALSE; private function __clone() { } private function __construct($fileName, $charset) { $this->fileName = $fileName; $this->charset = $charset; } /** * 获取实例 * * @param $fileName * @param string $charset * @return self */ public static function getInstance($fileName, $charset = 'gbk') { self::$instance === NULL and self::$instance = new self($fileName, $charset); return self::$instance; } /** * 设置title * * @param array $title * @return $this */ public function setTitle(array $title) { $this->title = $title; return $this; } /** * 追加数据 * * @param array $data * @param bool|TRUE $autoStart * @return $this */ public function appendData(array $data, $autoStart = TRUE) { $this->data = $data; if ($autoStart) { $this->start(); } return $this; } /** * 手动开始下载 */ public function start() { return $this->prepare()->echoCsv($this->data); } public function finish() { exit; } protected function prepare() { if (!$this->prepared) { header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Content-Type: application/force-download"); header("Content-Type: text/comma-separated-values; charset={$this->charset}"); header("Content-Transfer-Encoding: binary"); header("Content-Disposition: attachment; filename={$this->fileName}.csv"); $this->echoCsv($this->title); $this->prepared = TRUE; } return $this; } protected function echoCsv(array $arr) { foreach ($arr as &$val) { $val = str_replace([',', "\r", "\n", "\r\n", "\t"], '', $val); $val = mb_convert_encoding($val, $this->charset, 'utf-8'); is_numeric($val) and strlen($val) > 10 and $val = $val . "\t"; } $str = implode(',', $arr); echo $str; echo "\n"; } public function __toString() { return json_encode(get_object_vars($this)); }}
2、调用示例
<?php$title = ['id', 'name', 'language'];$datas = [ ['1', 'a', 'php'], ['2', 'b', 'java'], ['3', 'c', 'linux']];$csvClient = CsvExport::getInstance('test');$csvClient->setTitle($title);foreach($datas as $data) { $csvClient->appendData($data);}$csvClient->finish();
阅读全文
0 0
- php中简单实现excel下载功能
- PHP实现下载功能
- PHP 实现下载功能
- SpringMVC + Apache POI 实现WEB中Excel下载功能
- php实现excel表格下载
- php 实现文件下载功能
- php文件下载功能实现
- PHP实现文件下载功能
- php实现安全下载功能
- PHP实现下载文件功能
- PHP下载功能代码实现
- Socket 简单实现下载功能
- 页面下载功能简单实现
- springMVC实现Excel文件下载功能
- PHP中网站OA功能的简单实现
- PHP简单签到功能实现
- php实现简单记事本功能
- java SpringMVC中 POI读取数据库数据并写入Excel表格中,并实现下载功能
- Codeforces 490F Treeland Tour(dp)
- 文章标题
- 页面foreach遍历显示数据时,当要操作某个具体项目时,项目id只能从遍历项目体里传递出来。---循环体里的,动态的页面条目,比较抽象【很容易忘!牢记思路】
- scrapy中的数据流向
- Linux 共享库:LD_LIBRARY_PATH 与ld.so.conf
- php中简单实现excel下载功能
- ADB 常用命令
- C++中的容器及相关操作
- 结构体指针
- HDU
- 运算符
- STL--thread
- STM32-F407看门狗(2)
- ViewPager详解(实时更新,未完待续...)