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类进行封装.这是架构师的工作,但我们也要知道. 我们写一个封装类: 这个类 ...
随机推荐
- adv7180驱动
http://download.csdn.net/download/u013308744/9945184 http://www.ebaina.com/bbs/thread-10121-1-1.html ...
- (实用)Linux下Eclipse安装配置PyDev
记录备忘. PyDev是Eclipse下支持Python开发的IDE插件,本文介绍安装和配置PyDev插件的过程. 一.安装PyDev插件两种安装方法: 1.在eclipse的Help->Ins ...
- 用grep 筛选fastq 序列
grep 从文件中筛选出 包含指定的字符或者正则表达式的行:默认只打印匹配到的行, 比如一个文件 test.txt, 其内容为: abc def ghi jkl grep a test.txt, 输出 ...
- CSS3和jQuery实现的自定义美化Checkbox和Radiobox
现在经常可以在网络上看到一些非常奇特的表单元素,例如Checkbox复选框和Radiobox单选框,浏览器默认的样式确实是太丑了,而且更让人蛋疼的是各个浏览器的样式还不统一,考虑到现在越来越多的用户使 ...
- 通过tarball形式安装HBASE Cluster(CDH5.0.2)——HBASE 真分布式集群配置
一.应该先配置好zookeeper并成功启动,否则hbase无法启动 二.配置HBASE集群 1,配置hbase-env.sh,下面是最少配置项目 [hadoop@zk1 conf]$ vim hba ...
- 2013——M笔试南京——程序
迄今只参加了M南京笔试,可惜自己不是计算机出身,还有好多东西得学啊…… M的最后一题是编程: 输入:单链表L0.L1.L2……Ln-1.Ln,将链表变为:L0.Ln.L1.Ln-1.L2…… 算法: ...
- fork 至 “sys_clone" SyS_clone
注:glibc-2.17中fork的相应系统调用是sys_clone及SyS_clone.有人说调用的是sys_fork,但是我持否定意见,如果我们向真的来发起系统调用可以使用syscall. for ...
- Uploading File using Ajax and receiving binary data in Asp.net (C#)[转]
基础知识,可由此衍生.原文:http://uniapple.net/blog/?p=2050 In this post, I will show you how to upload a file us ...
- appium的xpath定位问题及常用方法
关于类似的帖子好像很多,但是没有找到具体能帮我解决问题的办法.还是自己深究了好久才基本知道app上面的xpath定位和web上的不同点: 先放一个图: A,先说说不用xpath的场景,一般是用于存在i ...
- java中字符串太长,怎么自动换到下一行
直接在中间代码出按回车