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类进行封装.这是架构师的工作,但我们也要知道. 我们写一个封装类: 这个类 ...
随机推荐
- Eclipse JUnit简单示例
在本节中,我们将看到一个简单的JUnit例子. 先创建一个工程,名称为:CalculateTest,并在这个工程上点击右键,选择:Build Path -> Add Library -> ...
- e782. 排列JList中的项
By default, the items in a list are arranged vertically, in a single column, as in: item1 item2 ... ...
- 学习Unity的步骤
作者:王选易链接:https://www.zhihu.com/question/23790314/answer/46815232来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...
- FunGuild 数据库简介
FUNGulid = Fungi + Functional + Guild , 是一个真菌的功能注释的数据库,目前数据库中涵盖了超过12000个真菌的功能注释信息: 网址如下: http://www. ...
- ORA-01033错误解决方案
现象:SQL*Plus无法连接,显示以下错误: ORA-01033 : ORACLE initialization or shutdown in progress 分析:应该是Oracle在启动后,用 ...
- Git log和git reflog
1.git log log命令可以显示所有提交过的版本信息.显示信息如下: $ git log commit e1bdff6e4830e09383078c860f45334d03771b03 (HE ...
- linux mount 挂接新硬盘
1.先用fdisk -l查看一下,先加入的外设地址名称 2. #fdisk /dev/sdb进入fdisk模式:Command (m for help):p //查看新硬盘的分区Command ( ...
- c#实现word,excel转pdf代码及部分Office 2007文件格式转换为xps和pdf代码整理
转换功能是通过调用安装了转换XPS和PDF的AddIn的Office2007对象模型完成的. 代码支持Office 2007支持的一切文件格式: Office 2007组件 扩展名 Word DOC, ...
- 【玩转Golang】 自定义json序列化对象时,非法字符错误原因
由于前台web页面传来的日期对象是这样的格式“2010-11-03 15:23:22”,所以我安装网上查来的办法,自定义包装了time.Time对象,实现自己的Marshal和UnMarshal方法 ...
- koa-route模块
const Koa = require('koa'); const route = require('koa-route'); const app = new Koa(); const about = ...