哪位知道,如何判断一个文件是Office文档?

white_dove3000 2009-10-27 09:02:36
如题,谢谢了。
...全文
154 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
bobob 2009-10-28
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 tr0j4n 的回复:]
你用WinHex打开Doc Xls PPt的文件看下就知道了,他们的文件头都不一样的,只需要读取文件的前2个字节作为特征码就能精确地确定是什么格式的了
[/Quote]
这样判断也是不精确的,word以前的格式是storage方式存储,现在最新版本的docx实际上就是一个zip包。
即使是以前的storage方式存储的格式,也不能确定就是word文档,因为qq聊天记录也是采用这种方式存储的。所以,如果从文件格式分析的话,将会是很复杂的事情,但是可以实现精确的判断是不是word文档
比如,读取storage结构,判断里面的子节点名字,如果是docx格式,先用zlib解压,再判断里面的xml文件和目录名字,等等,其他office格式类似。
MoXiaoRab 2009-10-28
  • 打赏
  • 举报
回复
你用WinHex打开Doc Xls PPt的文件看下就知道了,他们的文件头都不一样的,只需要读取文件的前2个字节作为特征码就能精确地确定是什么格式的了
maple_zhj 2009-10-28
  • 打赏
  • 举报
回复
一般用途,只要判断后缀就行。
如果这样还不够,只能去读文件头了。
ToperRay 2009-10-28
  • 打赏
  • 举报
回复
看扩展名吧。

把office里面的所有文件名找出来也没多少。

li985837 2009-10-28
  • 打赏
  • 举报
回复
CString StrFileName;
CFileDialog dlg(TRUE,NULL, NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
_T( "Office(*.doc,*.ppt,*.xls)|*.doc;*.ppt;*.xls;*.docx;*.pptx;*.xlsx;*.rar||"), this);
if(dlg.DoModal()==IDOK)
{
StrFileName=dlg.GetPathName( );
}//限制打开文件类型
这个答案非常的好,我也用的上。
wltg2001 2009-10-28
  • 打赏
  • 举报
回复
简单的是看扩展名,如果有时间分析文件头也是可行的,不过后者好像很难
lzsh0622 2009-10-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 gengjiaojiao19870528 的回复:]
后缀是.doc的是吧
[/Quote]

如何判断一个文件是Office文档? word,excel等都是Office

*.doc,*.ppt,*.xls)|*.doc;*.ppt;*.xls;*.docx;*.pptx;*.xlsx
  • 打赏
  • 举报
回复
后缀是.doc的是吧
gavinma 2009-10-27
  • 打赏
  • 举报
回复

CString StrFileName;
CFileDialog dlg(TRUE,NULL, NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
_T( "Office(*.doc,*.ppt,*.xls)|*.doc;*.ppt;*.xls;*.docx;*.pptx;*.xlsx;*.rar||"), this);
if(dlg.DoModal()==IDOK)
{
StrFileName=dlg.GetPathName( );
}//限制打开文件类型

也可以根据GetPathName( )截取字符串的.后的扩展名
InitialJ 2009-10-27
  • 打赏
  • 举报
回复
只能通过扩展名来判断吧
向立天 2009-10-27
  • 打赏
  • 举报
回复
可以看扩展名吧

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧