使用spreadsheet-reader流式读取超大excel文件

github:https://github.com/nuovo/spreadsheet-reader

最近有一个读取超大excel文件的功能需求,使用的phpexcel,有严重的内存泄露问题,暂时还未找到解决方案。

spreadsheet-reader是流式读取excel的,对于大多数格式的excel都能正常的读取,且内存消耗很小。

PS:其中遇到的坑

xlsx文件一定要标准,也就是必须是offce生成的,而不是wps之类的……被这个坑了很久

如果不正确会出现如下报错,个人猜测是文件头问题,建议用office打开另存为一份就没问题了

Warning: XMLReader::open(): Empty string supplied as input in C:\myphp_www\PHPTutorial\WWW\spreadsheet-reader-master\SpreadsheetReader_XLSX.php on line 959

Warning: XMLReader::read(): Load Data before trying to read in C:\myphp_www\PHPTutorial\WWW\spreadsheet-reader-master\SpreadsheetReader_XLSX.php on line 995

Notice: Undefined variable: i in C:\myphp_www\PHPTutorial\WWW\test.php on line 10
Array ( ) 
Warning: XMLReader::read(): Load Data before trying to read in C:\myphp_www\PHPTutorial\WWW\spreadsheet-reader-master\SpreadsheetReader_XLSX.php on line 995

原文地址:https://www.cnblogs.com/Lynwood/p/9417035.html

时间: 2024-08-09 04:15:49

使用spreadsheet-reader流式读取超大excel文件的相关文章

java mysql大数据量批量插入与流式读取分析

总结下这周帮助客户解决报表生成操作的mysql 驱动的使用上的一些问题,与解决方案.由于生成报表逻辑要从数据库读取大量数据并在内存中加工处理后在 生成大量的汇总数据然后写入到数据库.基本流程是 读取->处理->写入. 1 读取操作开始遇到的问题是当sql查询数据量比较大时候基本读不出来.开始以为是server端处理太慢.但是在控制台是可以立即返回数据的.于是在应用 这边抓包,发现也是发送sql后立即有数据返回.但是执行ResultSet的next方法确实阻塞的.查文档翻代码原来mysql驱动默

PHP流式读取XML文件

之前在项目中有读取XML的需求,一开始采用的是simplexml将xml文件全部load到内存里,然后一个节点一个节点读的方式,后来随着XML文件的增大,内存被撑爆了.于是赶紧想办法,于是有了流式读取.一开始老大给了我一个封装XMLReader的类,但是我发现这个类不是很符合我的要求,于是又把XMLReader按我的要求重新封装了一遍,在此感谢老大moon. 目前我的类非常简单就提供几个方法,我提供了Demo供大家参考使用.话不多说上代码 ? 1 2 3 4 5 6 7 8 9 10 11 12

根据NPOI 读取一个excel 文件的多个Sheet

大家都知道NPOI组件可以在你本地没有安装office的情况下来 读取,创建excel文件.但是大家一般都是只默认读取一个excel文件的第一个sheet.那么如果要读取一个excel 的所有sheet 要怎么做呢? 下面就来告诉大家如何操作NPOI 读取excel 的所有sheet. 首先我们先讲解操作excel 单独创建的一个类,我命名为 EXECLHELP using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.XSSF

读取超大Excel(39万行数据)

有个学长需要处理Excel数据,Excel数据共有39W,将数据读取后处理并导出数据.最开始尝试了 NPOI ,发现NPOI 并不能完成该项任务,随后尝试引用的com组件:Microsoft.Office.Interop.Excel.dll   读取EXCEL文件 . 最终 ,也以失败告终.最终,采用 将Excel 转为CSV 格式读取. 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文

Java中开发POI读取导入Excel文件及验证

Apache POI是Apache开发的开源的跨平台的 Java API,提供API给Java程序对Microsoft Office格式档案进行各种操作. POI中Excel操作很简单,主要类有 HSSFWorkbook:Excel文件 HSSFSheet:Excel文件内的分页sheet HSSHRow:行 HSSFCell:单元格 我们想导入读取并验证单元格的数据,如下: excel内容: 开发实例: import java.io.File; import java.io.FileInput

读取Excel二进制写入DB,并从DB中读取生成Excel文件

namespace SendMailSMSService { class Program { static void Main(string[] args) { var connString = SqlDataHelper.GetConnectionString<FileContent>(); //读取Excle文件并写入表中 var bytes = File.ReadAllBytes("a.xlsx"); var entity = new FileContent { Fi

流式I/O和文件

1.普通输入输出类 1.1    InputStream类型:用来表示从不同数据源产生输入的类,数据源包括 字节数组 String对象 文件 管道:工作方式与实际管道相似,从一端输入,从另一端输出: 一个由其他种类的流组成的序列,以便可以将它们收集合并到一个单一的流内: 1.1.1    每一种数据源都有相应的InputStream子类. 1.1.2    FilterInputStream也属于一种InputStream,为“decorator”类提供基类,而“decorator”类可以把属性

stream流批量读取并合并文件

import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.StringWriter; import java.nio.channels.FileChannel; import java.util

使用Pandas读取大型Excel文件

import os import pandas as pd HERE = os.path.abspath(os.path.dirname(__file__)) DATA_DIR = os.path.abspath(os.path.join(HERE, '..', 'data')) def make_df_from_excel(file_name, nrows): """Read from an Excel file in chunks and make a single Da