目录
回复讨论(解决方案)
首页 后端开发 php教程 老话题了.PHP导出EXCEL,phpexcel类很强大,但是效率低速度慢,fputcsv速度快但不知道怎么解决科学计数法的问题,求老司机传授经验

老话题了.PHP导出EXCEL,phpexcel类很强大,但是效率低速度慢,fputcsv速度快但不知道怎么解决科学计数法的问题,求老司机传授经验

Jun 23, 2016 pm 01:49 PM
效率 科学

如题...

导出的数据目前大约4W条  下个月可能有10W条  4W条的情况下最终导出大约20M   因为字段较多所以循环对每一条数据做了一些处理计算, 用PHPEXCEL导出大概3分钟出结果  用php自带的fputcsv大约1分钟出结果,但是因为有身份证和其他超长数字字段, 又会变成科学计数法

用FPUTCSV的时候给每个字段加上\t 可以避免科学计数法  但是在csv文件中每个字段都隐藏了双引号  客户无法接受

用PHPEXCEL可以指定某字段为文本格式  但导出时间太久  客户也无法接受

目前程序循环本身已尽可能优化, 就是导出这里没有办法   希望在以下两个方向的任意一个得到帮助

1. 优化或者简化PHPEXCEL的使用,使其在能满足以上功能的情况下尽可能提高效率

2. 导出CSV可以使长数字不以科学计数法的形式显示,或者指定该列单元格格式为文本

有有效的思路亦可 不胜感激


回复讨论(解决方案)

优化的一种方法:
http://bbs.youyax.com/Content-5058
假设有10000条数据,
分10次导出,每次导出1000条,
这种方法的好处是,可以避免长时间等待,
但是有个问题是好像还是很占用内存,
文件太大依然会报内存不足
原理是:
先导出1000条,
再次读取,定位到第1001行,
继续导出下1000条,
再次读取,定位到2001,
……

优化的一种方法:
http://bbs.youyax.com/Content-5058
假设有10000条数据,
分10次导出,每次导出1000条,
这种方法的好处是,可以避免长时间等待,
但是有个问题是好像还是很占用内存,
文件太大依然会报内存不足
原理是:
先导出1000条,
再次读取,定位到第1001行,
继续导出下1000条,
再次读取,定位到2001,
……




总耗时如果不减少的话意义不是很大~~


优化的一种方法:
http://bbs.youyax.com/Content-5058
假设有10000条数据,
分10次导出,每次导出1000条,
这种方法的好处是,可以避免长时间等待,
但是有个问题是好像还是很占用内存,
文件太大依然会报内存不足
原理是:
先导出1000条,
再次读取,定位到第1001行,
继续导出下1000条,
再次读取,定位到2001,
……




总耗时如果不减少的话意义不是很大~~
把你的方法或代码贴出来看看,研究研究,口说有点不清晰

1.Excel可以支持100万行记录,Excel 2003最大支持65536行,从2007版开始支持104万行,Excel极限是65536条。

参考下:循环生成CSV 数据, 每生成1000 条的时候刷新下缓冲期

$fp = fopen('php://output', 'a');// 输出Excel列名信息$head = array("电子邮件");foreach ($head as $i => $v) {    // CSV的Excel支持GBK编码,一定要转换,否则乱码    $head[$i] = iconv('utf-8', 'gbk', $v);}// 将数据通过fputcsv写到文件句柄fputcsv($fp, $head);// 计数器$cnt = 0;// 每隔$limit行,刷新一下输出buffer,不要太大,也不要太小$limit = 100000;// 逐行取出数据,不浪费内存$count = count($email);for($t=0;$t<$count;$t++) {    $cnt ++;    if ($limit == $cnt) { //刷新一下输出buffer,防止由于数据过多造成问题        ob_flush();        flush();        $cnt = 0;    }    $row[] = $email[$t];    foreach ($row as $i => $v) {        $row[$i] = iconv('utf-8', 'gbk', $v);    }    fputcsv($fp, $row);    unset($row);}2.长数字,可以再导出的时候,在前面预加个空格,这个就不以长度计数形式导出,而是以文本形式导出。
登录后复制

目前尚无很好的办法,  PHPexcel总是很慢 未能成功优化

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1675
14
CakePHP 教程
1429
52
Laravel 教程
1333
25
PHP教程
1278
29
C# 教程
1257
24
如何在 Windows 11 中为应用程序或进程打开或关闭效率模式 如何在 Windows 11 中为应用程序或进程打开或关闭效率模式 Apr 14, 2023 pm 09:46 PM

Windows 11 22H2中的新任务管理器对高级用户来说是一个福音。现在,它通过附加数据提供更好的 UI 体验,以密切关注您正在运行的流程、任务、服务和硬件组件。如果您一直在使用新的任务管理器,那么您可能已经注意到新的效率模式。它是什么?它是否有助于提高 Windows 11 系统的性能?让我们来了解一下!Windows 11 中的效率模式是什么?效率模式是任务管理器中的一

两小时就能超过人类!DeepMind最新AI速通26款雅达利游戏 两小时就能超过人类!DeepMind最新AI速通26款雅达利游戏 Jul 03, 2023 pm 08:57 PM

DeepMind的AI智能体,又来卷自己了!注意看,这个名叫BBF的家伙,只用2个小时,就掌握了26款雅达利游戏,效率和人类相当,超越了自己一众前辈。要知道,AI智能体通过强化学习解决问题的效果一直都不错,但最大的问题就在于这种方式效率很低,需要很长时间摸索。图片而BBF带来的突破正是在效率方面。怪不得它的全名可以叫Bigger、Better、Faster。而且它还能只在单卡上完成训练,算力要求也降低许多。BBF由谷歌DeepMind和蒙特利尔大学共同提出,目前数据和代码均已开源。最高可取得人类

PyCharm远程开发实用指南:提高开发效率 PyCharm远程开发实用指南:提高开发效率 Feb 23, 2024 pm 01:30 PM

PyCharm是一款功能强大的Python集成开发环境(IDE),广泛用于Python开发者进行代码编写、调试和项目管理。在实际的开发过程中,大多数开发者都会面临不同的问题,比如如何提升开发效率、如何与团队成员进行协作开发等。本文将介绍PyCharm远程开发的实用指南,帮助开发者更好地利用PyCharm进行远程开发,提高工作效率。1.准备工作在进行PyCh

地理信息科学专业学生应选择哪种电脑 地理信息科学专业学生应选择哪种电脑 Jan 13, 2024 am 08:00 AM

推荐适合地理信息科学专业学生用的电脑1.推荐2.地理信息科学专业学生需要处理大量的地理数据和进行复杂的地理信息分析,因此需要一台性能较强的电脑。一台配置高的电脑可以提供更快的处理速度和更大的存储空间,能够更好地满足专业需求。3.推荐选择一台配备高性能处理器和大容量内存的电脑,这样可以提高数据处理和分析的效率。此外,选择一台具备较大存储空间和高分辨率显示屏的电脑也能更好地展示地理数据和结果。另外,考虑到地理信息科学专业学生可能需要进行地理信息系统(GIS)软件的开发和编程,选择一台支持较好的图形处

新的「AI科学家」结合理论和数据来发现科学方程 新的「AI科学家」结合理论和数据来发现科学方程 May 18, 2023 am 10:49 AM

科学家们的目标是发现能够准确描述实验数据的有意义的公式。自然现象的数学模型可以根据领域知识手动创建,或者也可以使用机器学习算法从大型数据集自动创建。学界已经研究了表示相关先验知识与相关函数模型合并的问题,认为寻找与一般逻辑公理先验知识一致的模型,是一个悬而未决的问题。IBM研究团队以及三星AI团队的研究人员开发了一种方法「AI-Descartes」,通过将逻辑推理与符号回归相结合,能够从公理知识和实验数据中对自然现象模型进行原则性推导。该研究以「Combiningdataandtheoryfor

Java开发技巧大揭秘:优化数据库事务处理效率 Java开发技巧大揭秘:优化数据库事务处理效率 Nov 20, 2023 pm 03:13 PM

随着互联网的快速发展,数据库的重要性日益凸显。作为一名Java开发者,我们经常会涉及到数据库操作,数据库事务处理的效率直接关系到整个系统的性能和稳定性。本文将介绍一些Java开发中常用的优化数据库事务处理效率的技巧,帮助开发者提高系统的性能和响应速度。批量插入/更新操作通常情况下,一次向数据库中插入或更新单条记录的效率远低于批量操作。因此,在进行批量插入/更

如何在 Microsoft Edge 中开启节能模式? 如何在 Microsoft Edge 中开启节能模式? Apr 20, 2023 pm 08:22 PM

Edge等基于Chromium的浏览器会占用很多资源,但您可以在MicrosoftEdge中启用效率模式以提高性能。MicrosoftEdge网络浏览器自其不起眼的开始以来已经走过了漫长的道路。最近,微软为浏览器添加了一种新的效率模式,旨在提高浏览器在PC上的整体性能。效率模式有助于延长电池寿命并减少系统资源使用。例如,使用Chromium构建的浏览器(如GoogleChrome和MicrosoftEdge)因占用RAM和CPU周期而臭名昭著。因此,为了

子网掩码:作用与网络通信效率的影响 子网掩码:作用与网络通信效率的影响 Dec 26, 2023 pm 04:28 PM

子网掩码的作用及其对网络通信效率的影响引言:随着互联网的普及,网络通信成为现代社会中不可或缺的一部分。与此同时,网络通信的效率也成为了人们关注的焦点之一。在构建和管理网络的过程中,子网掩码是一项重要而且基础的配置选项,它在网络通信中起着关键的作用。本文将介绍子网掩码的作用,以及它对网络通信效率的影响。一、子网掩码的定义及作用子网掩码(subnetmask)

See all articles