我想检测用户是否不小心上传了标记为 .csv 的 Excel 文件。xls 文件是否有标准的二进制文件可以实现这一点?
1 回答
您可以在 python 中读取 excel 文件:
http://scienceoss.com/read-excel-files-from-python/
您可以在 Perl 中读取 excel 文件:
http://www.thegeekstuff.com/2011/12/perl-and-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 格式。