首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C、C++怎么调用windows api来操作office组件

2012-09-06 
C、C++如何调用windows api来操作office组件希望使用C、C++如何调用windows api来操作office组件,抽取数据和

C、C++如何调用windows api来操作office组件
希望使用C、C++如何调用windows api来操作office组件,抽取数据和转换,不需要图形界面,不使用mfc下的类库

[解决办法]
google一下嘛
[解决办法]
windows api调用不了office组件,只能调用与office公用的组件比如mapi,毕竟是两套软件
[解决办法]
vba,宏
[解决办法]
Office的API是COM……调用Office的API就好了
[解决办法]
顶楼上。微软为Office套件均设计提供了COM接口,COM接口不同于一般的API,会稍微复杂一点。

如果用脚本语言的话,操作起来会更简单一些。
[解决办法]
http://www.7880.com/Info/Article-55560220.html
[解决办法]
com接口操作 


[解决办法]
对于不同的OFFICE有不同的COM 这要看你是操作WORD 还是EXCEL了
[解决办法]
UP
[解决办法]
如何在控制台程序中读取WORD文档的内容? 
1.在VC中新建一控制台程序,选支持MFC(当然,你也可以不选择支持MFC的,不过会很麻烦)
 
2.按CTRL+W调出MFC ClassWizard,Add Class->From a type library,选择你的word的类型库(例如我的是word2003,安装在e盘,我的路径是"e:\edittools\microsoft office\office11\msword.olb"),选择完毕后,在弹出的窗口中选择要让classwizard生成的包装类,在本例中要用到_Application,Documents,_Document,Range这四个类,选中他们后按OK
 
3.进入你的main函数所在的cpp文件,加入头文件引用
#include "msword.h" //引用刚才classwizard生成的idispatch包装类

C/C++ code
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]){    int nRetCode = 0;    // initialize MFC and print and error on failure    if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))    {        // TODO: change error code to suit your needs        cerr << _T("Fatal Error: MFC initialization failed") << endl;        nRetCode = 1;    }    else    {        // TODO: code your application's behavior here.        CString strHello;        strHello.LoadString(IDS_HELLO);        cout << (LPCTSTR)strHello << endl;        if(CoInitialize(NULL) != S_OK)        {            AfxMessageBox("初始化com库失败");            return -1;        }        _Application wordapp;        Documents docs;        _Document doc;        Range aRange;        COleVariant vTrue((short)TRUE),                vFalse((short)FALSE),                vOpt((long)DISP_E_PARAMNOTFOUND,  VT_ERROR);          wordapp.CreateDispatch("Word.application",NULL);        wordapp.SetVisible(false);        docs = wordapp.GetDocuments();        doc=docs.Open(COleVariant("F:\\data\\test.doc"),vFalse,vTrue,vFalse,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt,vOpt);          aRange=doc.Range(vOpt,vOpt);    //    AfxMessageBox(aRange.GetText());        printf("%s",aRange.GetText());        doc.Close(vOpt,vOpt,vOpt);        wordapp.Quit(vOpt,vOpt,vOpt);        CoUninitialize();        }    return nRetCode;}
[解决办法]
代码怎么变成一行了?csdn这方面真糟糕……
PHP code
<?phprequire_once 'F:\xampp\php\PEAR\Spreadsheet\Excel\Writer.php';$word=new COM("word.application") or die("Cannot start Microsoft Word"); $word->Documents->Open("d:/t12.doc",0,1); if($word->Documents[1]->Paragraphs[1]->Range->Font->Name=="黑体")echo "第一段字体改为‘楷体_GB2312’正确\n"; else echo "第一段字体改为‘楷体_GB2312’错误\n"; if($word->Documents[1]->Paragraphs[2]->Range->Font->Size==14)echo "第二段字体改为14号正确\n"; else echo "第二段字体改为14号错误\n"; //Paragraphs[2]->Range->Font->Size = 14  echo $word->Documents[1]->Paragraphs[1]->Range->Font->Name;echo "\n"; echo $word->Documents[1]->Paragraphs[1]->Range->Font->Color;echo "\n"; echo $word->Documents[1]->Paragraphs[1]->Range->Font->Size;echo "\n"; echo $word->Documents[1]->Paragraphs[1]->Range->Font->Bold;echo "\n"; echo $word->Documents[1]->Paragraphs[1]->Range->Font->Underline;echo "\n"; echo $word->Documents[1]->Paragraphs[1]->Range->ParagraphFormat->Alignment;echo "\n"; $word->Quit();   $word = null; ?> 


[解决办法]

探讨

并不是说调用几个参数的问题,问题是整个系统是要做什么的,C、c++实现的东西php能实现么?

[解决办法]
[Quote=引用:
用c,c++调用脚本语言又不是什么难事,有能力的话完全可以封装了自己需要的功能给c++来用.现在还有多少系统是用单一语言实现的?com本身就是为了跨语言平台而创建的东西.
[/Quote]楼上讲的也有道理,可能楼主这个功能只是系统的一个小功能,所以最好是跟随整个系统开发语言,不可否认,有些东西调用其他语言实现更方便,但是对于系统后期的维护可能成本大。纯属个人理解,欢迎大家讨论
[解决办法]
学习

热点排行