目錄
回复讨论(解决方案)
首頁 後端開發 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

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++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教學
1664
14
CakePHP 教程
1421
52
Laravel 教程
1315
25
PHP教程
1266
29
C# 教程
1239
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由GoogleDeepMind和蒙特婁大學共同提出,目前資料和程式碼都已開源。最高可取得人類

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週期而臭名昭著。因此,為了

私有化部署 Stable Diffusion 玩 AI 繪圖 私有化部署 Stable Diffusion 玩 AI 繪圖 Mar 12, 2024 pm 05:49 PM

StableDiffusion是一個開源的深度學習模型,其主要功能是透過文字描述來產生高品質的圖像,並支援圖生成、模型合併、以及模型訓練等功能。此模型的操作介面可以在下圖中看到。如何生圖下面介紹一下小鹿喝水的生圖過程,生成圖的時候分為提示詞和負面提示詞,輸入提示詞的時候要明確描述,盡量具體描述你想要的場景、對象、風格和顏色。例如,不僅僅說“小鹿喝水”,而是說“一條小溪,旁邊是茂密的樹,小溪旁有小鹿在喝水”,負面提示詞是反方向的例如:無建築物、無人物、無橋樑、無圍欄,而過於模糊的描述可能導致結果不

See all articles