将纯文本HTML文件转换为二进制Excel 97-2003


Converting plain text HTML file to binary Excel 97-2003

我有一个"Excel"文件(扩展名为.xls),它原来是一个伪装成电子表格的纯文本HTML文件(如果我运行"file[filename]",我会得到"HTML文档文本"作为类型)。该文件来自第三方供应商,我无法控制其格式。

我想把文件转换成Excel97-2003格式,这样我就可以在PHP库(PHPExcel)中读取它。我可以通过在Excel中打开文件,忽略警告消息,然后显式地将其保存为Excel 97-2003来实现这一点,但我想自动化从初始文件到提取单元格数据并将其转储到数据库的整个过程。

理想情况下,我希望使用PHP库进行转换,因为这将更好地与代码库的其他部分集成,但用Perl、Java或(在必要时)C#编写的库也可以工作,前提是它们不依赖于运行Windows和Office的服务器。

是否有可用的工具或库可以提供此功能?

PhpExcelhttp://phpexcel.codeplex.com/是不错的,但你会遇到问题,因为它会用大床单吞噬内存。对于较大的工作表或速度,我建议使用perl-writeExcelhttp://search.cpan.org/~jmcnamara/Spreadsheet-WriteExcel-2.37/lib/Spreadsheet/WriteExcel.pm

perl-writeExcel库比PhpExcel更快,占用的内存更少。然后我使用

<?php
    echo passthru('perl filename.pl');
?>

通过PHP运行perl脚本。

目前看来,唯一的答案是通过在Excel中打开文件并重新保存来手动处理文件,这确实有效,但不允许完全自动化。

一旦PHPExcel的新版本发布,我将看看它是否支持HTML,因为这听起来很有希望。