我现在所做的,哪些工作是这样的:
private string DetermineOpenXML(string file)
{
try
{
SpreadsheetDocument doc = SpreadsheetDocument.Open(file, false);
doc.Close();
return ".xslx";
}
catch
{
try
{
WordprocessingDocument doc = WordprocessingDocument.Open(file, false);
doc.Close();
return ".docx";
}
catch
{
try
{
PresentationDocument doc = PresentationDocument.Open(file, false);
doc.Close();
return ".pptx";
}
catch
{
return string.Empty;
}
}
}
}
我认为除了反复试验之外,必须有更好的方法来查看它是什么类型的文件。问题是,我正在开发一个小程序,它找出文件扩展名文件应该有什么。我这样做的原因是因为我有来自数据库的文件,它们有时会在没有扩展名的情况下保存,有时会以错误的扩展名保存。
我对这些文件所做的是,我发现所有 OpenXML 文档共享相同的文件签名:“50 4B 03 04 14 00 06 00”,这接近于 zip 文件的签名,我也可以打开 OpenXML使用 zip 程序的文件并查看其内容。也许这是我应该寻求的解决方案,我只是希望使用 OpenXML SDK 会更快/更容易,并且它有一个属性或可以为我检查它的东西。
编辑:我已经添加了一个答案,我仍然想看看是否有更好的解决方案,即使它适用于我目前的目的。它没有考虑扩展名应该是模板文件。