相关网站:http://minidx.com/
如何使用VC 读取doc,xls,ppt等文件.给大家介绍一种方法,非常方便,简单,实用。
文章是从http://blog.minidx.com/2008/01/10/373.html转过来的,还有其它更详细的,大家可以直接访问http://minidx.com/,如果打开不了,就把翻墙(没有翻墙的同学点这里)开着,就OK了。
●Demo(VC++)源代码从VC2003Demo,VC2005Demo,VB.net下载,实在上不了国外网站的同学,直接到我的资源里去下点击打开链接(三个包都在里面).相关文档资料分类中的“Doc,Xls,Pdf等文件中抽取文本的Com组件及Demo(VC++)源代码”)
●执行Demo
①、双击run.bat执行,注册Com组件
②、双击demo_vb\bin\Release或者demo_vb\bin\Debug目录下的demo_vb.exe
③、点“File”,选择对象文件
④、选中文件,查看抽取文本结果。(下面分别是中日英Word的抽取结果)
注意:抽取文本对象文件需要有读写权限,正在编辑中的文件抽取文本时可能会出错。
●实际调用方法:
①、复制下面三个文件到自己工程的相应目录下
・ExtractText.dll
・ExtractText.h
・ExtractText_i.c
②、在需要的文件中用下面的代码引入
#include “ExtractText.h”
#include “ExtractText_i.c”
③、抽取文本部分代码:
1: ITextExtractor *te = NULL;
2: // Declare and HRESULT and a pointer to the Simple_ATL interface
3: HRESULT hr;
4:
5: // Now we will intilize COM
6: hr = CoInitialize(0);
7: BSTR fileName = ::SysAllocString(strFileName);
8: if(SUCCEEDED(hr))
9: {
10: hr = CoCreateInstance( CLSID_TextExtractor, NULL, CLSCTX_INPROC_SERVER,
11: IID_ITextExtractor, (void**) &te);
12:
13: hr = te->ExtractText(fileName, (long)lFileSize, &cval);
14: if( cval ) txt_extract_text.SetWindowText(cval);
15:
16: hr = te->Release();
17: }
18: // Uninitialize COM
19: CoUninitialize();
当然,也可以通过GetProcAddress的方式导入函数,函数的接口请参照ExtractText.h,LoadLibrary方式的使用方法也很简单,有兴趣的可以自己做着试试看,这里不再重复说明了。同样的,有什么问题可以直接在这里留言或者在Minidx帮助论坛发贴寻找帮助。该模块可用于任何商业和非商业的用途,如果你愿意的话,可以发一个邮件给我告诉我这一模块被用在了你的项目中,那么当你取得成功的时候,我也可以向我的朋友们吹嘘一下,当然这不是必需的,:)
注意:如果需要获取PDF内容的同学,这里需要注意,必须得去下载PDF的Ifiter,这里提供一个地址,点击打开链接,地址上V4.1,V5.0,V6.0,经过我的测试,只有安装完V6.0的版本,读取PDF才是OK的。但是V6.0的有9M多。当然还可以去下载其它的
PDF的Ifiter,不过一般都是收费的,哪位朋友如果有免收费的,体积小的,可以发我邮箱一个不胜感激(邮箱地址:763098346@QQ.com)或者私信我也行.祝大家顺利.