我想逐行读取带有PHP的Excel文件,因为一次读取整个文件会导致内存溢出。
我经常搜索,但直到现在都没有运气。
我认为PHPExcel库可以在实现过滤器类时读取excel文件的块,但每次获取此块时它都会读取整个文件,这在大型.xls文件中是不可能的,因为它需要时间
任何帮助?
答案 0 :(得分:0)
这可能是完全不可能的,但从我从你的问题得到的信息来看,以下似乎是一个明显的选择,至少需要考虑的事情......
我觉得这是一个非常大的文件,需要经常访问。所以,我只是尝试在数据库中导入它的数据。
怎么做:
答案 1 :(得分:0)
如果您在阅读Excel文件中唯一需要的是数据,那么这是我阅读大量Excel文件的方法:
我在我的服务器上安装gnumeric,即使用debian / ubuntu: apt-get install gnumeric
然后php调用读取我的excel文件并将其存储到二维数据数组中非常简单(维度是行和列):
system("ssconvert \"$excel_file_name\" \"temp.csv\"");
$array = array_map("str_getcsv", file("temp.csv"));
然后我可以用我的阵列做我想做的事。对于10MB大型xls文件,这需要不到10秒的时间,同时我需要在我最喜欢的电子表格软件上加载文件!
对于非常大的文件,您应该使用fopen()和file_getcsv()函数并执行您必须执行的操作而不将数据存储在一个巨大的数组中,以避免将整个csv文件存储在内存中的文件()功能。这会慢一点,但不会占用你服务器的所有内存!