【发布时间】:2013-01-25 22:44:13
【问题描述】:
我现在做了什么,哪个有效:
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 文件的签名,我可以还可以使用 zip 程序打开 OpenXML 文件并查看其内容。也许这是我应该采用的解决方案,我只是希望使用 OpenXML SDK 会更快/更容易,并且它有一个属性或可以为我检查它的东西。
编辑: 我已经添加了一个答案,我仍然想看看是否有更好的解决方案,即使它适用于我目前的目的。它没有考虑扩展名应该是模板文件。
【问题讨论】: