我可以在不使用任何模块的情况下阅读excel文件吗? 我试着读一个普通的文件,然后打印二进制字符;也许是因为编码?
但是阅读csv文件是正常的。
答案 0 :(得分:9)
Excel文件是二进制文件,2007年之前的格式显然非常多毛。我相信.xlsx
文件实际上是压缩的XML,因此解压缩它们应该会产生人类可读的东西,但我从未尝试过。你为什么不想使用模块?
如果您有兴趣,请进一步阅读:
http://joelonsoftware.com/items/2008/02/19.html
http://en.wikipedia.org/wiki/Office_Open_XML_file_formats
答案 1 :(得分:6)
我可以在不使用任何模块的情况下阅读excel文件吗?
理论上是的。在实践中没有。
Excel XLS文件是二进制文件中的二进制文件。第一步是从OLE COM文档容器中解析Excel BIFF数据。此数据不一定按顺序排列。
然后你必须解析Excel BIFF数据,允许版本之间的差异,具有不同编码的共享字符串表和以解析器不友好的方式映射大数据记录的CONTINUE块。
Excel XLSX格式稍微容易一些,因为它是Zip容器中的XML文件集合。但是,如果您不使用模块,那么即使这样也会很痛苦。
处理Excel文件的Perl模块代表了数百个工时。期望投入相同数量的工作来避免它们。
答案 2 :(得分:5)
为什么你不能使用模块?
您可以尝试找出Excel电子表格的格式,代码,然后在程序中使用它。也许将其写为模块并将其提交给CPAN。 等一下!那里已经有类似的模块了!
CPAN的全部目的是防止您重新发明轮子。您需要阅读Excel电子表格,并且有人已经做了很多工作来弄清楚如何做到这一点,并且正在免费提供给您。 40,000美元的价值 1 ,它是免费的! CPAN系统使安装模块相当简单。您运行cpan
命令。没有理由避免可以节省数百小时工作的模块。
并且,您避免哪种类型的模块?是所有模块,还是仅包含未包含在标准分发中的模块。我讨厌认为你不使用像File::Copy
或Data::Dumper
这样的东西只是因为它们是模块,即使它们默认包含在大多数Perl发行版中。
1 想象一下,聘请团队编写代码来转换Excel文件,以便Perl程序可以读取它。他们必须弄清楚文件格式的细节,各种边缘情况的代码,并通过各种测试运行它以确保它真的有效。粗略估计如果我们不包括图表,嵌入式内容和远程数据访问等内容将大约200个工时,但仅仅因为它实际上已被记录。