MFC 如如何关闭已经打开的word文件
展开全部 基本步骤(1)创建)一个 MFC 的程序工程。
注意:在VC中对WORD进行操作需要在MFC AppWizard - Step 2 of4中的Automaiton选项上打上勾。
(2)Ctrl+W 执行 ClassWizard(本文按照 VC6 操作,示例程序是在VC6 下编写测试的)。
(3)Add Class...\From a type Library... 在 Office目录中,找到想使用的类型库。
(我使用的是 Office2003,其Word 的类型库文件,保存在 E:\ProgramFiles\Microsoft Office\Office12\MSWOR.OLB)。
(4)选择类型库文件后,在弹出的对话窗中继续选择要添加的类。
具体选择什么类,要看你将来在程序中打算调用什么功能。
当然,也可以不用考虑这么多,用鼠标和Shift键配合,全部选择也可以。
(5)初始化COM。
方法一,找到App的InitInstance()函数,在其中添加AfxOleInit()函数的调用;方法二,在需要调用COM功能的地方 CoInitialize(NULL),调用完毕后CoUninitialize()。
(6)在你需要调用 Office 功能函数的 cpp 文件中 #include //为了方便操作 VARIANT 类型变量,使用 CComVariant 模板类 #include "文件名.h" //具体的头文件名,是由装载类型库的文件名决定的,如MSWORD。
示例程序: //word应用程序 _Application app; //初始化连接 app.CreateDispatch("word.Application"); Documents doc; CComVarianta(_T(strWord)),b(false),c(0),d(true),aa(0),bb(1); _Document doc1; doc.AttachDispatch(app.GetDocuments()); doc1.AttachDispatch(doc.Add(&a,&b,&c,&d)); Range range; //求出文档的所选区域 range=doc1.GetContent();//取出文件内容 str=range.GetText(); m_richedit.SetWindowText(str); //关闭 app.Quit(&b,&c,&c); //释放环境 app.ReleaseDispatch();
如何用C++读取word中的图片,最好显示在MFC
展开全部 #include #include int main () { FILE * fpPhoto, * fpText, * fpTarget ; int iRead ; char szBuf[100] ; printf ("请输入第一个文件名(jpg):\n") ; gets (szBuf) ; fpPhoto = fopen (szBuf, "rb") ; printf ("请输入第二个文件名(txt):\n") ; gets (szBuf) ; fpText = fopen (szBuf, "rb") ; printf ("请输入目的文件名(jpg):\n") ; gets (szBuf) ; fpTarget = fopen (szBuf, "wb") ;...
如何用VC在word里插入用MFC写的控件
楼上说的没错。
word文件(.doc/.doxc)不是文本格式文件,不能对文件进行内容的直接追加写入,这样的写入,要么破坏了文件,要么写入的内容会被忽略。
要想管理word文件的内容,无论哪种文件直接写的方式都不行,包括CFile,CStdioFile和fopen等形式都不可用。
必须使用OLE接口对文件进行管理和操作,也就是通过office组件进行管理。
百度”OLE word文件“有很多详细的讲解文章,这里就不赘述了。
MFC读取excel里面内容写入到TXT
这个是使用ODBC来完成的第一步:建立基于对话框的MFC工程,命名为MfctoExc;第二步:添加两个头文件到stdafx.h, #include #include 第三步:添加两个按钮控件和一个List Box控件,给List Box添加控制变量CListBox m_ExcelList;添加DDX_Control(pDX, IDC_LIST_BOX, m_ExcelList);第四步:给两个按钮添加两个功能函数,读写excelvoid CMfctoExcDlg::OnRead() {// TODO: Add your control notification handler code hereCDatabase database; CString sSql; CString sItem1, sItem2,sItem3; CString sDriver; CString sDsn; CString sFile,sPath;//获取主程序所在路径,存在sPath中GetModuleFileName(NULL,sPath.GetBufferSetLength (MAX_PATH+1),MAX_PATH);sPath.ReleaseBuffer (); int nPos;nPos=sPath.ReverseFind ('\\');sPath=sPath.Left (nPos);sFile = sPath + "\\Demo.xls"; // 将被读取的Excel文件名 // 检索是否安装有Excel驱动 "Microsoft Excel Driver (*.xls)" sDriver = GetExcelDriver(); if (sDriver.IsEmpty()) { // 没有发现Excel驱动 AfxMessageBox("没有安装Excel驱动!"); return; } // 创建进行存取的字符串 sDsn.Format("ODBC;DRIVER={%s};DSN=' ';DBQ=%s", sDriver, sFile); TRY { // 打开数据库(既Excel文件) database.Open(NULL, false, false, sDsn); CRecordset recset(&database); // 设置读取的查询语句. sSql = "SELECT Num,Name, Age " //设置索引顺序 "FROM Exceldemo " ; "ORDER BY Name "; // 执行查询语句 recset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly); // 获取查询结果 while (!recset.IsEOF()) { //读取Excel内部数值 recset.GetFieldValue("Num", sItem1); recset.GetFieldValue("Name", sItem2); recset.GetFieldValue("Age", sItem3); //显示记取的内容 m_ExcelList.AddString( sItem1 + " --> "+sItem2+ " --> "+sItem3 ); // 移到下一行 recset.MoveNext(); } // 关闭数据库 database.Close(); } CATCH(CDBException, e) { // 数据库操作产生异常时... AfxMessageBox("数据库错误: " + e->m_strError); } END_CATCH;}void CMfctoExcDlg::OnWrite() {// TODO: Add your control notification handler code hereCDatabase database;CString sDriver = "MICROSOFT EXCEL DRIVER (*.XLS)"; // Excel安装驱动CString sExcelFile,sPath;CString sSql;//获取主程序所在路径,存在sPath中GetModuleFileName(NULL,sPath.GetBufferSetLength (MAX_PATH+1),MAX_PATH);sPath.ReleaseBuffer ();int nPos;nPos=sPath.ReverseFind ('\\');sPath=sPath.Left (nPos);sExcelFile = sPath + "\\Demo.xls"; // 要建立的Excel文件TRY{ // 创建进行存取的字符串 sSql.Format("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s",sDriver, sExcelFile, sExcelFile); // 创建数据库 (既Excel表格文件) if( database.OpenEx(sSql,CDatabase::noOdbcDialog) ) { // 创建表结构(序号、姓名、年龄) sSql = "CREATE TABLE Exceldemo (Num Number,Name TEXT,Age NUMBER)";//可以用中文表示序号,姓名,年龄等 database.ExecuteSQL(sSql); // 插入数值 sSql = "INSERT INTO Exceldemo (Num,Name,Age) VALUES (1,'小西',24)"; database.ExecuteSQL(sSql); sSql = "INSERT INTO Exceldemo (Num,Name,Age) VALUES (2,'小东',22)"; database.ExecuteSQL(sSql); sSql = "INSERT INTO Exceldemo (Num,Name,Age) VALUES (3,'小朱',25)"; database.ExecuteSQL(sSql); sSql = "INSERT INTO Exceldemo (Num,Name,Age) VALUES (4,'小鸭',27)"; database.ExecuteSQL(sSql); } // 关闭数据库 database.Close();AfxMessageBox("Excel文件写入成功!");}CATCH_ALL(e){ TRACE1("Excel驱动没有安装: %s",sDriver);}END_CATCH_ALL;}第五步:添加成员函数CString CMfctoExcDlg::GetExcelDriver(){ char szBuf[2001]; WORD cbBufMax = 2000; WORD cbBufOut; char *pszBuf = szBuf; CString sDriver; // 获取已安装驱动的名称(涵数在odbcinst.h里) if (!SQLGetInstalledDrivers(szBuf, cbBufMax, &cbBufOut)) return ""; // 检索已安装的驱动是否有Excel... do { if (strstr(pszBuf, "Excel") != 0) { //发现 ! sDriver = CString(pszBuf); break; } pszBuf = strchr(pszBuf, '\0') + 1; } while (pszBuf[1] != '\0'); return sDriver;}文件存储路径设置:CString filename, sExcelFile ;CFileDialog fileDlg (FALSE, "Path", filename,OFN_FILEMUSTEXIST| OFN_HIDEREADONLY, "*.xls");if( fileDlg.DoModal()==IDOK) { sExcelFile = fileDlg.GetPathName(); // 要建立的Excel文件 CFileFind finder; BOOL bWorking = finder.FindFile(sExcelFile);//寻找文件if (bWorking)//如果已经存在文件,则删除 { CFile::Remove((LPCTSTR)sExcelFile); }}else return ;将变量写入Excel可以用下面的笨方法:for(int i=0;i<5;i++) { sSql = "INSERT INTO Exceldemo (Num,Name,Age) VALUES ("; str0.Format("%d...
转载请注明出处51数据库 » mfc怎么打开word
凌云萧萧