5

我想检测用户是否不小心上传了标记为 .csv 的 Excel 文件。xls 文件是否有标准的二进制文件可以实现这一点?

4

1 回答 1

2

您可以在 python 中读取 excel 文件:

http://scienceoss.com/read-excel-files-from-python/

您可以在 Perl 中读取 excel 文件:

http://www.thegeekstuff.com/2011/12/perl-and-excel/

如何在 Perl 中读取 Excel 文件?

Unix/Linux 实用程序file可以识别 excel 和大量其他文件。

样本输出:

file ~/Download/*xls

/home/paul/Downloads/REDACTED1.xls:          Composite Document File V2 Document, Little Endian, Os: Windows, Version 5.1, Code page: 1252, Author: Someones Name, Last Saved By: Somebody Else, Name of Creating Application: Microsoft Excel, Create Time/Date: Wed Jan 27 00:39:46 2010, Last Saved Time/Date: Sun Feb 28 13:55:47 2010, Security: 0

/home/paul/Downloads/REDACTED2.xls: Composite Document File V2 Document, Little Endian, Os: Windows, Version 1.0, Code page: -535, Author: Paul , Last Saved By: Paul , Revision Number: 3, Total Editing Time: 18:09, Create Time/Date: Wed Oct 26 23:45:51 2011, Last Saved Time/Date: Thu Oct 27 00:34:42 2011

您可以简单地构建一个调用file并返回结果的库。

要查看file它是如何做到的,可以使用源代码,并且该file实用程序有自己的配置文件,甚至还有一个魔术字节和字符串信息的配置目录。

apt-get source file

./file-5.11/magic/MagDir 是一个充满魔法字节和字符串的目录,可以以多种格式查找,但在我自己的 excel 文件扫描中看到的“复合文档文件”并未在此处声明。这个目录确实有 Mac 上的 Excel、Word 和一些旧的 msdos 格式的定义文件。

cd ./file-5.11; grep 'Composite Document File' */*

产量:

src/cdf.c: * Parse Composite Document Files, the format used in Microsoft Office
src/cdf.c: * N.B. This is the "Composite Document File" format, and not the
src/cdf.h: * Parse Composite Document Files, the format used in Microsoft Office
src/cdf.h: * N.B. This is the "Composite Document File" format, and not the
src/readcdf.c:                if (file_printf(ms, "Composite Document File V2 Document")
src/readcdf.c:          if (file_printf(ms, "Composite Document File V2 Document")

我建议您可以调查以确定该file实用程序如何检测某些 Microsoft Excel 格式。

于 2013-08-12T01:55:24.747 回答