重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
php导出数据excel有专门的库,当导出少量数据的时候速度很快,但是当数据量大的时候就会存在服务器内存不够之类的。
成都创新互联主要从事网站制作、网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务厦门,十载网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220
所以在导出大量数据的时候就应该分页查询数据,避免服务器宕机。正好PHP提供了fputcsv函数可以将数据写入到csv文件中。
这样我们就可以使用PHP对数据进行分页查询,再写入到csv文件中。
字段(必填):就是自己起个字段名(列名),例如id,name等这样的字符串.(注意:字段名不能相同).
类型(必选):这系统提供了很多。一般常用的也没几个
整型int,字符串型varchar,和char,还有浮点型double,文本text,时间timestamp.
长度值(建意给定长度):也就是给上面的类型中限定一个长度。比如varchar(30),int(6),在长度里直接写整型的数值就行了.(时间类型不需要提供长度)。
整理(如果建库已经选好则不用选了。否则必选):(这个是数据表的字符集)这里基本上就两个常用.(utf8_general_ci和gb2312_chinese_in)。
属性:一般不选。(1二进制。2无符号整型,3无符号整型,不够位数则补0,4在更新数据时,更新当前时间戳[基本上用于timestamp])
空:也就是这个字段的值是否可以为空.
auto_increment:自增长.一般主键会用且为整型时。
下面是我写的一个PHP导出数据到CSV问价的函数,你到时候直接调用就行了
/**
* 导出CSV文件
* @param string $fileName 文件名字
* @param string|array $data 导出数据,csv格式的字符串|数值数组
* @param string $to_encoding 目标转换编码
* @param string $from_encoding 当前编码
*/
function exportCSV($fileName = '', $data = '', $to_encoding = 'gb2312', $from_encoding = 'utf-8') {
$fileName = empty($fileName) ? date('YmdHis') : $fileName;
// 文件标签
Header("Content-type: application/octet-stream");
header("Content-type: application/vnd.ms-excel; charset=$from_encoding");
Header("Content-Disposition: attachment; filename=$fileName.csv");
$str = '';
if($data) {
if(is_array($data)) {
foreach ($data as $v) {
if(is_array($v)) {
foreach ($v as $vo) {
$str .= (is_numeric($vo) ? "'".$vo : $vo."").",";
}
$str = trim($str, ",")."\r\n";
} else {
$str .= (is_numeric($v) ? "'".$v : $v).",";
}
}
$str = trim($str, ",")."\r\n";
} else {
$str = $data;
}
}
echo mb_convert_encoding($str, "gb2312", "utf-8");
exit;
}
打开cmd 进入mysql
我就发几个例子 你摸索下应该就会明白了
如果在cms你操作不熟悉 建议你下载一个NavicatforMySQL 或者 phpmyadmin 来管理你的数控表
创建一个表:
CREATE TABLE `test` (
`id` INT(10) NOT NULL AUTO_INCREMENT,
`uid` VARCHAR(10) NOT NULL DEFAULT '0',
`regdate` DATE NOT NULL,
`remark` text,
PRIMARY KEY (`id`) 设置该字段为主键字段
) ENGINE=InnoDB DEFAULT CHARSET=gbk AUTO_INCREMENT=5 ;
添加字段:
INSERT INTO `test` (`id`, `uid`, `regdate`, `remark`) VALUES
(1, '张三', '2008-07-02', '学生'),
(2, '李四', '2008-07-03', '学生'),
(3, '王五', '2008-07-02', '工人'),
(4, '赵六', '2008-07-01', '学生');
插入信息:
INSERT INTO test(id, uid, regdate, remark) VALUES('', '百度', NOW(), '程序员');
根据下列编码程序可以。
1./*** 批量导出数据* @param $arr 从数据库查询出来,即要导出的数据* $name excel表歌名*/
2.function expExcel($arr,$name){ require_once 'PHPExcel.php';
3. //实例化 $objPHPExcel = new PHPExcel(); /*右键属性所显示的信息*/
4.$objPHPExcel-getProperties()-setCreator("zxf") // -setLastModifiedBy("zxf") //最后一 -setTitle('数据EXCEL导出') //标题-setSubject('数据EXCEL导出') //主题setDescription('导出数据') //描setKeywords("excel") //标记setCategory("result file"); //类别
5. //设置当前的表格 $objPHPExcel-setActiveSheetIndex(0);// 设置表格第一行显示内容$objPHPExcel-getActiveSheet() -setCellValue('A1', '业主姓名') -setCellValue('B1', '密码')-setCellValue('C1', '手机号码' -setCellValue('D1', '地址')
6.//设置第一行为红色字体 -getStyle('A1:D1')-getFont()-getColor()-setARGB(PHPExcel_Style_Color::COLOR_RED);$key = 1; /*以下就是对处理Excel里的数据。
如果你要求的excle表格不是很复杂 .可以用html的table表格来实现.因为excle的兼容性可以打开xml文档.所以你可以使用html文件来当做excle文件.
如果比较复杂 ,就要使用phpexcle了
这个是网页自动导出的基本思路
如果只是导出几个少数的表和内容
你可以使用phpmyadmin的导出功能.能够实现导出excle文档.