数据量超过10万,用php_excel导出很慢而且数据导入不全,还占空间,用csv格式导出,很快还不出错.

set_time_limit(0);
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="amazon_product_quantity.csv"');
header('Cache-Control: max-age=0');
$res = (new ListModel);
$counts = $res->query('select count(*) from test');
$limit = ceil($counts/1000);
// 打开PHP文件句柄,php://output 表示直接输出到浏览器
$fp = fopen('php://output', 'a');
$head = array('id', 'sno', 'num', 'name','text','img','small_img');
foreach ($head as $i => $v) {
// CSV的Excel支持GBK编码,一定要转换,否则乱码
$head[$i] = iconv("utf-8","gb2312//IGNORE",$v);

}
fputcsv($fp, $head);
$i = 1;
$n = 1;
while($n <= $limit){
$items = $res->selectAll($n,0);
foreach($items as $key => $val){
fputcsv($fp, $val);
$i++;
}
if($i>20000){//读取一部分数据刷新下输出buffer
ob_flush();
flush();
$i = 0;
}
$n++;
/*
if($n == 300){
break;
}
*/

}

导出csv文件后

发现记事本打开中文正常,但是excel打开中文乱码;

原因是 通过查看编码发现,导出的 CSV 程序文件是 UTF-8 无BOM编码格式,而我们通常使用 UTF-8 编码格式 都是有 BOM 的。吧执行导出的代码改为有bom编码,再次导出好了

csv文件的读取:

set_time_limit(0);
$file = fopen(APP_PATH.'application/controllers/test.csv','r');
while ($data = fgetcsv($file)) {    //每次读取CSV里面的一行内容
//print_r($data); //此为一个数组,要获得每一个数据,访问数组下标即可
$goods_list[] = $data;
}
echo $goods_list[0][1];
fclose($file);

下面是用php_excel导出的

$res = (new ListModel);
$counts = $res->query('select count(*) from test');
$limit = ceil($counts/1000);
$i = 1;
$n = 1;
$objPHPExcel = new PHPExcel();
$objPHPExcel->getActiveSheet()->setCellValue('A'.$i, 'id');
$objPHPExcel->getActiveSheet()->setCellValue('B'.$i, 'sno');
$objPHPExcel->getActiveSheet()->setCellValue('C'.$i, 'num');
$objPHPExcel->getActiveSheet()->setCellValue('D'.$i, 'name');
$objPHPExcel->getActiveSheet()->setCellValue('E'.$i, 'text');
$objPHPExcel->getActiveSheet()->setCellValue('F'.$i, 'img');
$objPHPExcel->getActiveSheet()->setCellValue('G'.$i, 'small_img');
$i++;
while($n <= $limit){
$items = $res->selectAll($n,0);
foreach($items as $key => $val){
$objPHPExcel->getActiveSheet()->setCellValue('A'.$i, $val['id']);
$objPHPExcel->getActiveSheet()->setCellValue('B'.$i, $val['sno']);
$objPHPExcel->getActiveSheet()->setCellValue('C'.$i, $val['num']);
$objPHPExcel->getActiveSheet()->setCellValue('D'.$i, $val['name']);
$objPHPExcel->getActiveSheet()->setCellValue('E'.$i, $val['text']);
$objPHPExcel->getActiveSheet()->setCellValue('F'.$i, $val['img']);
$objPHPExcel->getActiveSheet()->setCellValue('G'.$i, $val['small_img']);
if($i  == 10000){
sleep(1);
}
$i++;
}
$n++;
if($n == 300){
break;
}
}

$objPHPExcel->getActiveSheet()->setTitle('人员表'); //
$fileName = 'ryuan';
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:application/vnd.ms-execl");
header("Content-Type:application/octet-stream");
header("Content-Type:application/download");;
header('Content-Disposition: attachment;filename="'.$fileName.'.xls"');
header("Content-Transfer-Encoding:binary");
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');

php导出超过10万行数据到excel相关推荐

  1. 700万行数据,Excel也能轻松应对,你会吗?

    经常听到有小伙伴说Excel超过10万行数据就无法操作了,有的甚至说一万行数据就已经很卡了.那今天知识兔就给大家演示下过儿的Excel是如何处理700万行Excel数据的. 这里有两个文件夹,分别是系 ...

  2. php导出1万条数据excel_实用!用PHP导出百万级大数据到Excel

    实用!用PHP导出百万级大数据到Excel 作者:PHPYuan 时间:2018-07-31 03:41:41 关注我们的人 月薪都过万了 一.数据量分析 假设我们需要单日导入的数量为20W+ Exc ...

  3. C#读取Excel表格数据到DataGridView中和导出DataGridView中的数据到Excel

    其实想在datagridview中显示excel表格中的数据跟读取数据库中的数据没什么差别,只不过是创建数据库连接的时候连接字段稍有差别. private void btnShow_Click(obj ...

  4. js创建10万行表格 页面显示10万行数据

    js创建10万行表格 页面显示10万行数据 <html> <head></head> <style> table {     border-collap ...

  5. 导出100万条数据到excel

    导出100万条数据到excel 目的 数据库中有100万条数据,用java程序导入到excel,所花费的时间 演示 过程 eclipse 创建main sqlserver连接数据库程序 TCP/IP连 ...

  6. layui数据表格分页导出全部页面的数据到Excel表格中

    在使用layui数据表格进行分页显示时,可能需要导出数据到Excel表,可是直接使用table.exportFile却会导出的是已经渲染到表中的数据,这时就会发现问题,导出的数据只是分页表格数据中的一 ...

  7. java将jsp页面表格导出excel表格数据_简单的POI导出JSP页面表格数据到excel

    数据库中的equipment表数据: 读取数据库中表数据的代码TestExcel.java public class TestExcel extends BaseAction{/** * @param ...

  8. 尴尬!EXCEL百万行数据量就歇菜了,还是这个方法实用

    前段时间发生了一个尴尬的新闻,据英国媒体报道,英国的卫生部门公开承认由于"技术故障"问题导致新冠病例的统计数据出现了失误,遗漏了将近16000个病例,英国公共卫生部临时首席执行官迈 ...

  9. C#基于Npoi通过特性的方式导出简单数据到Excel或基于特性以及基于Excel模板导出数据到Excel以及从Excel中把数据导入到对象中

    导出数据到Excel表格以及从Excel表格中读取数据是我们日常开发很多情况都会遇到的,这里或许只是导出一些简单的数据到excel,这里或许会按照一定的模板导出数据到excel,这里也可能需要从Exc ...

最新文章

  1. 还有王法吗?美国联邦调查局开发人脸识别系统,数据源涉及公民隐私
  2. android 异步刷新 方法,android应用中实现异步更新UI的方法有哪些
  3. 百度视频携手神策数据,引领基于 AI 的短视频推荐技术新潮流
  4. 【Boost】boost库中function和bind一起使用的技巧(二)
  5. 克莱因瓶为何永远无法装满?科学家发现:宇宙或许就是克莱因瓶!
  6. 案例二:动态页面模拟点击
  7. 华为云空间联系人是不是机主_华为Mate 30系列国内发布 超强隐私安全保护放大招...
  8. 拼多多市值超2100亿美元 黄峥成中国第二大富豪
  9. pageinfo对合并list进行分页_PageInfo实现分页
  10. BI的需求调研的方法分类
  11. cookie helper.php,CookieHelper cook crud 工具类
  12. 后台java规范参数_详解Java后端优雅验证参数合法性
  13. yii2分页的基本使用及其配置详解 1
  14. 2022最新最全升级版【精品工具】用Appuploader发布上传iOS APP上架流程简单快速
  15. Ae效果控件快速参考:3D 通道
  16. Java常量池原理以及垃圾回收
  17. 【车牌识别】基于模板匹配算法实现新能源车牌识别matlab源码
  18. Laravel Excel导出xls乱码
  19. Java框架学习笔记--Mybatis学习
  20. Android Style和自定义属性

热门文章

  1. 单片机:定时计数器的相关实验
  2. 过滤字符串中的Emoji表情
  3. Lumerical Python API学习(五)——光子逆向设计概述
  4. 计算机专用软件 up,Advanced PC Cleanup(垃圾清理工具) V1.0.0 英文安装版
  5. 绝对路径与相对路径简介
  6. 〖Python 数据库开发实战 - Python与MySQL交互篇⑨〗- 项目实战 - 封装数据库连接池与编写第一个业务流程(用户登录即身份校验)
  7. 深入浅出 pairwise 算法
  8. 功能测试用例自动生成算法Pairwise
  9. IIS SSL客户端证书(忽略/接受/必须)之一——服务器证书申请
  10. 干货满满!OpenStack的探索之路——基础理论精讲