许华升的老婆照片:VC++利用Automation操作word, excel - David的专栏 - CS...
来源:百度文库 编辑:偶看新闻 时间:2024/05/03 22:55:26
VC++利用Automation操作word, excel 收藏
关于VC操作word和EXCEL的,其中有网上抄的资料,也有自己的理解和体会。
1. 一般来说,VC操作word和EXCEL比较直接的方式是利用automation. 翻译成中文就是自动化。你要做的第一件事情就是为你的工程添加操作word和EXCEL需要的头文件。方法如下:
对于VC6.0来说,打开class wizard, 然后选中automation,弹出以下界面:
点击 "Add Class"按钮,会出现一个下拉菜单,只有2项,然后选择"from a type lib",此时弹出一个对话框,提示输入typelib文件。
这些文件一般在你office的安装目录下,名字是msword.olb,选中后点OK, 就出现下面的对话框: 选择所有的类,然后点击ok,这样你就生成了需要的两个文件msword.h和msword.cpp.(名字可以修改)。
关于EXCEL,方法类似。
利用automation对word和excel的操作是类似的。类的结构如下:
Application // 代表程序
Workbooks // 代表word所有文档
Workbook // 单个word文档
...... Worksheets // 代表excel表的集合
Worksheet //代表单个表
...... Range //活动区域
Cells / cell 单元格 Rows /row 行 Columns / column 列 Tables / table 表 Bookmarks / bookmark 标签 saveas 另存为 printout 打印剩下的就不多讲了,直接给代码吧。关于word的: CoInitialize(NULL); // 初始化com组件,必须的 _Application wordApp; if (!wordApp.CreateDispatch("Word.Application")) //将wordApp链接到word应用程序 { CoUninitialize(); return FALSE; } ... Documents docs = wordApp.GetDocuments(); // 获得word的文档集 _Document doc; COleVariant vtOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR); COleVariant vtTrue((short)TRUE), vtFalse((short)FALSE); CString filename; //要打开的文件名字 if(Filename.Find(".dot",0) > 0) // 如果是后缀是.dot,表明为一个word模板 { // add the template to the word COleVariant covFileName; covFileName.vt = VT_BSTR; covFileName.bstrVal = ReportFilename.AllocSysString(); doc = docs.Add(covFileName,vtOptional,vtOptional,vtOptional); // 调用add } else { // 如果是一个.doc普通文档,新建一个新的文档,然后把这个文件添加进去 doc = docs.Add(vtOptional,vtOptional,vtOptional,vtOptional); // the selection will be released automatically. Selection oSelection; oSelection = wordApp.GetSelection(); //插入一个文件 oSelection.InsertFile(Filename.GetBuffer(ReportFilename.GetLength()),vtOptional,vtOptional,vtOptional,vtOptional); Filename.ReleaseBuffer(); oSelection.DetachDispatch(); }当然,你也可以直接用open来打开一个文件。有对应的open方法。取得word的版本号。 2000对应9.0, 2002对应10.0, 2003对应11.0,2007对应12.0CString sVersion = wordApp.GetVersion(); COleVariant tablebookmarkname(bookmarkName); //取得word的标签 Bookmarks wordbookmarks = doc.GetBookmarks(); //根据标签名取得指定标签 Bookmark wordbookmark; wordbookmark = wordbookmarks.Item(tablebookmarkname); //取得区域 Range range ; range = wordbookmark.GetRange(); // 取得区域相连的表 Tables ts = range.GetTables(); Table t = ts.Item(1); Rows rows = t.GetRows(); Row row = rows.Item(1); // the index is starts 1, ,2... Cells cells = row.GetCells(); int colcount = cells.GetCount(); Cell cell = t.Cell(2, k+1); range = cell.GetRange(); CString inh = range.GetText(); row = rows.Add(vtOptional);//设置文字 range.SetText(inhnew);保存文件,注意版本不同,有可能导致接口不同。COleVariant savefilename, fileformat;if(sVersion == "9.0"){ doc.SaveAs9(savefilename, vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional, vtOptional,vtOptional,vtOptional,vtOptional); } else if(sVersion == "10.0"){ doc.SaveAs(&vNeuerName,& vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional, vtOptional,vtOptional,vtOptional,vtOptional,vtOptional, vtOptional,vtOptional,vtOptional,vtOptional); } else if(sVersion == "11.0") { doc.SaveAs(&vNeuerName,& vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional, vtOptional,vtOptional,vtOptional,vtOptional,vtOptional, vtOptional,vtOptional,vtOptional,vtOptional); }//打印文件 doc.PrintOut(vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional); 退出: wordApp.Quit(vtOptional,vtOptional,vtOptional); 也可以用shellexcute打开和打印一个word文件。 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/bichenggui/archive/2009/09/24/4589804.aspx
关于VC操作word和EXCEL的,其中有网上抄的资料,也有自己的理解和体会。
1. 一般来说,VC操作word和EXCEL比较直接的方式是利用automation. 翻译成中文就是自动化。你要做的第一件事情就是为你的工程添加操作word和EXCEL需要的头文件。方法如下:
对于VC6.0来说,打开class wizard, 然后选中automation,弹出以下界面:
点击 "Add Class"按钮,会出现一个下拉菜单,只有2项,然后选择"from a type lib",此时弹出一个对话框,提示输入typelib文件。
这些文件一般在你office的安装目录下,名字是msword.olb,选中后点OK, 就出现下面的对话框: 选择所有的类,然后点击ok,这样你就生成了需要的两个文件msword.h和msword.cpp.(名字可以修改)。
关于EXCEL,方法类似。
利用automation对word和excel的操作是类似的。类的结构如下:
Application // 代表程序
Workbooks // 代表word所有文档
Workbook // 单个word文档
...... Worksheets // 代表excel表的集合
Worksheet //代表单个表
...... Range //活动区域
Cells / cell 单元格 Rows /row 行 Columns / column 列 Tables / table 表 Bookmarks / bookmark 标签 saveas 另存为 printout 打印剩下的就不多讲了,直接给代码吧。关于word的: CoInitialize(NULL); // 初始化com组件,必须的 _Application wordApp; if (!wordApp.CreateDispatch("Word.Application")) //将wordApp链接到word应用程序 { CoUninitialize(); return FALSE; } ... Documents docs = wordApp.GetDocuments(); // 获得word的文档集 _Document doc; COleVariant vtOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR); COleVariant vtTrue((short)TRUE), vtFalse((short)FALSE); CString filename; //要打开的文件名字 if(Filename.Find(".dot",0) > 0) // 如果是后缀是.dot,表明为一个word模板 { // add the template to the word COleVariant covFileName; covFileName.vt = VT_BSTR; covFileName.bstrVal = ReportFilename.AllocSysString(); doc = docs.Add(covFileName,vtOptional,vtOptional,vtOptional); // 调用add } else { // 如果是一个.doc普通文档,新建一个新的文档,然后把这个文件添加进去 doc = docs.Add(vtOptional,vtOptional,vtOptional,vtOptional); // the selection will be released automatically. Selection oSelection; oSelection = wordApp.GetSelection(); //插入一个文件 oSelection.InsertFile(Filename.GetBuffer(ReportFilename.GetLength()),vtOptional,vtOptional,vtOptional,vtOptional); Filename.ReleaseBuffer(); oSelection.DetachDispatch(); }当然,你也可以直接用open来打开一个文件。有对应的open方法。取得word的版本号。 2000对应9.0, 2002对应10.0, 2003对应11.0,2007对应12.0CString sVersion = wordApp.GetVersion(); COleVariant tablebookmarkname(bookmarkName); //取得word的标签 Bookmarks wordbookmarks = doc.GetBookmarks(); //根据标签名取得指定标签 Bookmark wordbookmark; wordbookmark = wordbookmarks.Item(tablebookmarkname); //取得区域 Range range ; range = wordbookmark.GetRange(); // 取得区域相连的表 Tables ts = range.GetTables(); Table t = ts.Item(1); Rows rows = t.GetRows(); Row row = rows.Item(1); // the index is starts 1, ,2... Cells cells = row.GetCells(); int colcount = cells.GetCount(); Cell cell = t.Cell(2, k+1); range = cell.GetRange(); CString inh = range.GetText(); row = rows.Add(vtOptional);//设置文字 range.SetText(inhnew);保存文件,注意版本不同,有可能导致接口不同。COleVariant savefilename, fileformat;if(sVersion == "9.0"){ doc.SaveAs9(savefilename, vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional, vtOptional,vtOptional,vtOptional,vtOptional); } else if(sVersion == "10.0"){ doc.SaveAs(&vNeuerName,& vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional, vtOptional,vtOptional,vtOptional,vtOptional,vtOptional, vtOptional,vtOptional,vtOptional,vtOptional); } else if(sVersion == "11.0") { doc.SaveAs(&vNeuerName,& vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional, vtOptional,vtOptional,vtOptional,vtOptional,vtOptional, vtOptional,vtOptional,vtOptional,vtOptional); }//打印文件 doc.PrintOut(vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional,vtOptional); 退出: wordApp.Quit(vtOptional,vtOptional,vtOptional); 也可以用shellexcute打开和打印一个word文件。 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/bichenggui/archive/2009/09/24/4589804.aspx
VC AUTOMATION + WORD
关于vc操作sql
关于vc操作xml
VC基本操作求助
VC++数据库操作问题
“利用剪贴板操作”是什么意思?
本人利用javascript创建文件对象时,出现“automation服务器不能创建对象”,如何解决
VC对文本文件的操作
VC++的窗口利用
VC如何利用三维数据作图
关于vc++利用CMSComm控制步进电机
关于vc++利用CMSComm控制步进电机
vc调试是怎样操作的
VC++中进行多表查询操作
VC文件操作的两个问题
如何利用操作调节明亮对比度?
如何利用操作调节明亮对比度?
(魔兽)怎样利用食尸鬼双线操作
如何利用c/vc/c#实现重新启动计算机?
如何利用c/vc/c#创建文件夹?
vc中如何利用数组将字符串转换为整型
如何利用vc中wParam判断按键状态?
如何利用vc++开发pda上的应用程序的图形界面?
高手进来.Automation 问题