PHP 简易导出excel 类解决Excel 打开乱码
<?php
class exportCsv{ //列名
protected $_column = array();
protected $_reg = array();
public $ret = ""; public function setColumn($colunms){ foreach ($colunms as $k => $colunm){
$this->_column[$k] = $colunm['title'];
$this->_reg[$k]['reg'] = $colunm['reg'];
$this->_reg[$k]['colunm'] = $colunm['name'];
}
return $this;
} public function bulidData($data){ $this->ret = implode(",", $this->_column);
foreach($data as $k=>$dat){
if(!empty($this->_reg)){
$dat = call_user_func_array(array($this, 'doFilter') , array($dat));
}
$this->ret .= " \n".implode(",", $dat);
}
} public function transport($name="default"){
header("Content-Disposition: attachment; filename={$name}.csv");
header("Content-Type:APPLICATION/OCTET-STREAM");
$bomHeader = pack('H*','EFBBBF'); //将bom头转换二进制放在所有字符顶部,可以解决office Excel打开是乱码的问题
die($bomHeader.$this->ret);
} private function doFilter($data){ foreach($this->_reg as $k =>$fun){
if( $data[$fun['colunm']] && method_exists($this,$fun['reg'])){
$data[$fun['colunm']] = $this->$fun['reg']($data[$fun['colunm']]);
}
}
return $data;
} //格式化时间戳
private function dataFormate($timestamp){
return date("Y-m-d",$timestamp);
}
//去除换行
private function htmlFormate($content){
return str_replace(array("\n","\t\n"), array(" "," "), $content);
}
}
使用方法:
$columnArr = array(
0=>array('title'=>'ID','name'=>'cid'),
array('title'=>'用户名','name'=>'uid'),
array('title'=>'评论内容','name'=>'comments','reg'=>'htmlFormate'),
array('title'=>'评分', 'name'=>'satisfaction', 'reg' =>'int'),
array('title'=>'商品编码', 'name'=>'goods_sn', 'reg' =>'int'),
array('title'=>'添加时间','name'=>'add_time','reg'=>'dataFormate'),
array('title'=>'审核状态','name'=>'status')
);
import ( "@.ORG.exportCsv" );
$csvModel = new exportCsv();
$csvModel->setColumn($columnArr);
set_time_limit(0);
$comments = $model->table('mall_comments mc')->where($map)->field('cid,uid,comments,satisfaction,goods_sn,add_time,status')->select();
$csvModel->bulidData($comments);
PHP 简易导出excel 类解决Excel 打开乱码的更多相关文章
- vim学习笔记(12):在vim中修改文件编码,解决vim 打开乱码
在linux 中查看文件编码可以通过以下几种方式: 一.查看文件编码 1.查看文件编码file命令 :file ip.txt ip.txt: UTF-8 Unicode text, with esca ...
- 如何解决CHM打开乱码的问题
1. 问题 经常碰到一些 CHM 格式的帮助文档出现乱码无法阅读的情况,而且 CHM 文档不像浏览器一样,右键可以选择字符编码,非常不便.究其原因,主要就是 CHM 文档在页面中没有指定合适的字符编码 ...
- 导出CSV格式文件,用Excel打开乱码的解决办法
导出CSV格式文件,用Excel打开乱码的解决办法 1.治标不治本的办法 将导出CSV数据文件用记事本打开,然后另存为"ANSI"编码格式,再用Excel打开,乱码解决. 但是,这 ...
- DevExpress GridControl GridView 导出到 Excel 类
说明: 1>GridView 导出到 Excel (如果分页,只导出当前页数据) 2>GridView 导出到 Excel 3>方法2可以参考DataTable 导出到 Excel ...
- DataTable 导出到 Excel 类
底层类: #region DataTable 导出到 Excel /// <summary> /// DataTable 导出到 Excel /// </summary> // ...
- Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类
Java 通过Xml导出Excel文件,Java Excel 导出工具类,Java导出Excel工具类 ============================== ©Copyright 蕃薯耀 20 ...
- (原创)解决Excel 互操作错误"检索COML类工厂中 CLSID为 {00024500-0000-0000-C000-000000000046}的组件时失败,原因是出现以下错误: 80070005"
最近在.net中处理Excel文件数据导入时报出以下错误: 检索COML类工厂中 CLSID为 {00024500-0000-0000-C000-000000000046}的组件时失败,原因是出现以下 ...
- 基于jdk1.7实现的excel导出工具类
通用excel导出工具类,基于泛型.反射.hashmap 以及基于泛型.反射.bean两种方式 import java.io.*;import java.lang.reflect.Field;impo ...
- 022医疗项目-模块二:药品目录的导入导出-对XSSF导出excel类进行封装
资源全部来源于传智播客. 好的架构师写的程序,就算给刚入门的新手看,新手一看就知道怎么去用.所以我们要对XSSF导出excel类进行封装.这是架构师的工作,但我们也要知道. 我们写一个封装类: 这个类 ...
随机推荐
- Linux操作_grep/egrep工具的使用
一.grep命令介绍 命令格式:grep [-cinvABC] ‘word’ filename,常用选项如下: -c:表示打印符合要求的行数. -i:表示忽略大小写. -n:表示输出符合要求的行及其行 ...
- SQL数据查询之——嵌套查询
一.概念描述 在SQL语言中,一个 SELECT-FROM-WHERE 语句称为一个查询块.将一个查询块嵌套在另一个查询块的 WHERE 子句或 HAVING 短语的条件中的查询称为 嵌套查询.例如: ...
- 无法定位序数 12384 于动态链接库 mfc90.dll
场景: 运行 vs2008 编译生成的一个 exe 错误: 无法定位序数 12384 于动态链接库 mfc90.dll 原因: 缺少vc++ 2008 运行库. vcredist 全称Microsof ...
- android位移动画的两种实现方式
在android开发,我们会常常使用到位移动画,普通情况下位移动画有两种实现方式.一种是直接通过java代码去实现,第二种是通过配置文件实现动画,以下是两种动画的基本是用法: 纯Java代码实现: / ...
- iptables filter表小案例
案例1:把80端口,22端口,21端口放行 22端口指定IP访问,其它IP拒绝. shell脚本实现: [root@centos7 ~]# vim /usr/local/sbin/iptables.s ...
- nodejs npm 使用淘宝 NPM 镜像
使用淘宝 NPM 镜像 大家都知道国内直接使用 npm 的官方镜像是非常慢的,这里推荐使用淘宝 NPM 镜像. 淘宝 NPM 镜像是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读), ...
- keynote代码高亮【转】
码农即使做ppt,也离不开代码,在keynote下,如果要粘贴代码,如何做到语法高亮呢? 补充1,该功能由pygments提供支持,所以支持的语言见:http://pygments.org/langu ...
- lua 时间戳和时间互相转换
1.时间戳转换成时间 local t = 1412753621000 function getTimeStamp(t) return os.date("%Y%m%d%H", ...
- cp -rf 提示覆盖解决办法
cp覆盖时,无论加什么参数-f之类的还是提示是否覆盖,当文件比较少的时候还可以按Y确认,当很多文件的时候就不好说了 方法一:vi ~/.bashrc # .bashrc # User specific ...
- Windbg在软件调试中的应用
Windbg在软件调试中的应用 Windbg是微软提供的一款免费的,专门针对Windows应用程序的调试工具.借助于Windbg, 我们常见的软件问题:软件异常,死锁,内存泄漏等,就可以进行高效的排查 ...