PHP - 读取excel文件

时间:2013-08-11 13:54:05

标签: php excel

我想逐行读取带有PHP的Excel文件,因为一次读取整个文件会导致内存溢出。

我经常搜索,但直到现在都没有运气。

我认为PHPExcel库可以在实现过滤器类时读取excel文件的块,但每次获取此块时它都会读取整个文件,这在大型.xls文件中是不可能的,因为它需要时间

任何帮助?

2 个答案:

答案 0 :(得分:0)

这可能是完全不可能的,但从我从你的问题得到的信息来看,以下似乎是一个明显的选择,至少需要考虑的事情......

我觉得这是一个非常大的文件,需要经常访问。所以,我只是尝试在数据库中导入它的数据。

  • 我想没有必要解释数据库是性能和缓存的主人。
  • 之后仍然可以将数据库的内容导出到excel文件中。
  • MySql适用于PHP,并且比excel文件更容易访问。大多数php托管服务提供商默认使用PhpMyAdmin管理工具提供MySql数据库。

怎么做:

  • 如果您安装了PhpMyAdmin,则可以关注these simple steps
  • 如果您具有对服务器的命令行访问权限,那么您甚至可以将文件从命令行直接导入MySql数据库。

答案 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文件存储在内存中的文件()功能。这会慢一点,但不会占用你服务器的所有内存!