mfc读取excel文件|MFC如何读取EXCEL表格的数据

mfc读取excel文件|MFC如何读取EXCEL表格的数据的第1张示图

⑴ mfc 如何打开文件

读取EXCEL文档里的数据,因为EXCEL是有格式的,所以和读取TXT等数据文件完全不同。如果TXT,那回么使用CFile类Open打开文件就可答以读取数据了,相对比较简单。读取EXCEL文档里的数据,需要用ADO数据源或者OLE的Office组件,在Open菜单响应函数中设置数据源并进行数据库操作,如果初学,可能会比较困难,需要熟悉的东西很多。建议:EXCEL文件可以另存为csv格式,这个是纯文本的,可以直接CFile按照文本文档读取,如果不是项目需求,这个实现比较适合初学者。

⑵ MFC读写Excel、word文件。

我前几天写了来一个,但是好像根据自不同的Excel版本会出现创建Excel失败的效果,我在自己电脑上就行,换了电脑就不行了,不知道什么原因。我发给你,你看一下吧,即使不能用,里面的函数还是有用的,都有解释!

⑶ MFC中,怎样从EXCEL中读取数据,修改,再写入到EXCEL里,最好在MFC中又现成的函数调用,有吗

搜 vc 操作 excel 用com接口可以搞定 否则手动将excel保存成 以下格式 mfc处理后用excel打开1,2,3,4,5,1,2,3,4,5文件名用excel的文件名就行了

⑷ 关键字:MFC OLE EXCEL 看了网上大量的VC 操作 excel 知识,但是自己写还是乱七八糟的!

ClassWizard->MessageMaps->AddClass->From a type library 选择Office安装目录下的ExcelX.olb(只要安装了Office,总会有一个,x根据版本不同而不同) 可以让mfc自动为你生成excel库的包装类如下 _Application _Workbook _Worksheet Workbooks Worksheets Range 然后添加excel的头文件,在程序开始CoInitialize(NULL) 来初始化com.定义上面的类对象来访问excel,根对象是 _Application 可以定义_Application App; App.SetVisible(TRUE); //使Excel可见,也可不可见,一样可以用程序访问,只是你看不到。 App.CreateDispatch("Excel.Application"); //创建Excel程序对象。然后通过得到的App的成员函数再得到Worksheets,Workbooks等对象,来访问Excel.你自己可以搜索相关成员函数。 单元格的值可通过Range对象的成员函数来访问。

⑸ MFC如何读取EXCEL表格的数据,并把他存放在一个数组中

私信不是有回你吗?改一下应该就可以了。 int *pBuf; pBuf = new int[UsedRows+1]; int j=0; for (int k=1;k<i;k++) { CString strSingel; strSingel = AstrALLstr[k-1]; int nBuf;; nBuf=atoi(strSingel); memcpy(pBuf+j,&nBuf,sizeof(&nBuf)); j++; } //下面就可以对动态数组的值进行你专想属要的计算了,例如: int nCal; nCal = pBuf[300]+pBuf[400]; delete []pBuf; pBuf =NULL;

⑹ MFC读取excel 不安装Office不利用Office组件 可能实现吗

应该可以实现,我原来用过数据库实现,不过我机器上装有office,所以我不能确定没有office的机器一定能用,但是确实在编程的时候是不需要office的,我是写文件,所以我会用office去打开来看我的结果。网上可以找到代码,我现在手头也不方便给你找那段代码了。你自己搜索一下吧

⑺ 想要用MFC操作excel文件,有些问题向大侠们请教!

m_ExlBooks.AttachDispatch(m_ExlApp.GetWorkbooks()); m_ExlBook.AttachDispatch(m_ExlBooks.Add(_variant_t(TempPath))); //TempPath 获取文件路径 m_ExlSheets.AttachDispatch(m_ExlBook.GetWorksheets(),TRUE);m_ExlSheets.Add(vtMissing,vtMissing,_variant_t((long)2),vtMissing);m_ExlSheet.AttachDispatch(m_ExlSheets.GetItem(_variant_t((long)2)),TRUE); m_ExlSheet.SetName("测试结果");

⑻ MFC或C++下如何读取Excel文件中的图表(一个柱状图),然后把这个图保存成一张图片

实际上用C++读取到的还是一组数据,柱状图只不过是EXCEL根据数据生成绘制的而已.所以你想用MFC绘制 保存图片,那就需要自己根据数据来调用GUI绘制了, 可以保存为bmp文件.

⑼ MFC读取excel里面内容写入到TXT

这个是使用ODBC来完成的第一步:建立基于对话框的MFC工程,命名为MfctoExc;第二步:添加两个头文件到stdafx.h, #include <afxdb.h> #include <odbcinst.h>第三步:添加两个按钮控件和一个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中GetMoleFileName(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中GetMoleFileName(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",a[i]); sSql=sSql+str0; sSql=sSql+",'"; sSql=sSql+str[i]; sSql=sSql+"',"; str0.Format("%0.7f",data[i]); sSql=sSql+str0; sSql=sSql+")"; database.ExecuteSQL(sSql); } 其中a[ ]是一个int型数组,str[ ]是CString数组,data[ ]是float数字

⑽ MFC VC++读取EXCEL文件

需要引入安全数组COleSafeArray,然后逐一从数组中把数据读出来

未经允许不得转载:山九号 » mfc读取excel文件|MFC如何读取EXCEL表格的数据

赞 (0)