精华内容
下载资源
问答
  • MFC读取Excel文件+数据处理+写入Excel

    万次阅读 多人点赞 2018-08-20 10:52:27
    在日常编程的过程中,我们经常会遇到需要...门槛相对较高,所以我们有时需要用EXCEL来代替简单的数据库操作,对于MFC连接数据库并进行对应操作,可以参考之前的博客:MFC以ADO方式连接ACCESS数据库 今天主要介绍...

    在日常编程的过程中,我们经常会遇到需要读写文件的操作,当然,最好的选择是数据库来进行读写,但是由于数据库使用环境的要求(比如某些数据库要求必须安装数据库软件后才能使用),同时,要进行数据库操作需要对SQL语句有一定的了解,门槛相对较高,所以我们有时需要用EXCEL来代替简单的数据库操作,对于MFC连接数据库并进行对应操作,可以参考之前的博客:MFC以ADO方式连接ACCESS数据库

    今天主要介绍MFC连接Excel的操作方法(包含Excel打开、读取、数据操作、和生成新文件),话不多说,先上程序效果图:

    需要下载程序源码的请点击这里

    这里特别感谢两个程序源码,从中受益匪浅,博主主要使用了2中提供的修正版的“Excel封装库V2.0”以及1中的存文件部分代码:

    1、MFC List Control控件内容导出成Excel

    2、MFC读取Excel文件

     程序示例中我们采用的是OLE方式对数据库进行操作

    准备步骤:

    首先新建一个Dialog窗体程序,添加list control和两个按钮
        1)将ExcelLib文件夹拷贝到程序目录下;
        2)将Export2Excel.h,Export2Excel.cpp两个文件添加到项目;
        3)包含头文件,#include "ExcelLib/Export2Excel.h"
    通过以上步骤在程序中引入了可以读取Excle文件的CExport2Excel类;(相关文件在源码中有提供)

    接下来就是分别介绍Excel文件的打开和数据处理操作,这里直接贴上源码,注释已经比较详细了:

    void CExcelTestDlg::OnBnClickedButtonOpenExcel()
    {
    	//获取文件路径
    	CFileDialog* lpszOpenFile;
    	CString szGetName;
    	lpszOpenFile = new CFileDialog(TRUE,"","",OFN_FILEMUSTEXIST|OFN_HIDEREADONLY,"Excel File(*.xlsx;*.xls)|*.xls;*.xlsx",NULL);
    	if (lpszOpenFile->DoModal()==IDOK)
    	{		
    		szGetName = lpszOpenFile->GetPathName();	
    		SetWindowText(szGetName);
    
    		delete lpszOpenFile;
    	}
    	else
    		return;
    
    	//打开文件
    	//文件中包含多个sheet时,默认打开第一个sheet
    	CExport2Excel Excel_example;
    	Excel_example.OpenExcel(szGetName);
    
    	//获取sheet个数
    	int iSheetNum = Excel_example.GetSheetsNumber();
    
    	//获取已使用表格行列数
    	int iRows = Excel_example.GetRowCount();
    	int iCols = Excel_example.GetColCount();
    
    	//获取单元格的内容
    	CString cs_temp = Excel_example.GetText(1,1);
    	//AfxMessageBox(cs_temp);
    	
    	//List control上显示
    	//获取工作表列名(第一行)
    	CStringArray m_HeadName;
    	m_HeadName.Add(_T("ID"));
    
    	for (int i=1;i<=iCols;i++)
    	{
    		CString m_content = Excel_example.GetText(1,i);
    		m_HeadName.Add(m_content);	
    	}
    
    	//清空ClistCtrl
    	m_list.DeleteAllItems();
    	while(m_list.GetHeaderCtrl()->GetItemCount()>0)
    	{
    		m_list.DeleteColumn(0);
    	}
    	//初始化ClistCtrl,加入列名
    	InitList(m_list,m_HeadName);
    
    	//填入内容
    	//第一行是标题,所以从第2行开始
    
    	CString num;
    	int pos;
    	for (int row = 2;row<=iRows; row++)
    	{
    		pos = m_list.GetItemCount();
    		num.Format(_T("%d"),pos +1);
    		m_list.InsertItem(pos,num);
    
    		//加法
    		if (int colum =1)
    		{
    			CString num;
    			CString show;
    			num= Excel_example.GetText(row, colum) ;
    			int mid_num = atoi(num);
    			mid_num = mid_num + 2;
    			show.Format("%d", mid_num);
    			m_list.SetItemText(pos, colum, show);
    		}
    		//减法
    		if (int colum =2)
    		{
    			CString num;
    			CString show;
    			num = Excel_example.GetText(row, colum);
    			int mid_num = atoi(num);
    			mid_num = mid_num -2;
    			show.Format("%d", mid_num);
    			m_list.SetItemText(pos, colum, show);
    		}
    		//乘法
    		if (int colum = 3)
    		{
    			CString num;
    			CString show;
    			num = Excel_example.GetText(row, colum);
    			int mid_num = atoi(num);
    			mid_num = mid_num* 2;
    			show.Format("%d", mid_num);
    			m_list.SetItemText(pos, colum, show);
    		}
    		//除法
    		if (int colum = 4)
    		{
    			CString num;
    			CString show;
    			num = Excel_example.GetText(row, colum);
    			float mid_num = atof(num);
    			mid_num = mid_num /2.0;
    			show.Format("%0.1f", mid_num);
    			m_list.SetItemText(pos, colum, show);
    		}
    
    		
    	}
    
    	//关闭Excel文件
    	Excel_example.Close();
    }

    接下来是对于List Control中内容的保存操作:

    void CExcelTestDlg::OnBnClickedButton2()
    {
    	// TODO:  在此添加控件通知处理程序代码
    	CFileDialog FileDialog(FALSE, "xls", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("Microsoft Excel 2000(*.xls)|*.xls|所有文件(*.*)"), this);
    	if (FileDialog.DoModal() != IDOK)
    	{
    		return;
    	}
    	CString cStrFile = FileDialog.GetPathName();  //选择保存路径名称
    
    	if (::PathFileExists(cStrFile))
    		DeleteFile(cStrFile);
    
    	//CString cStrFile = _T("E:\\myexcel.xls");
    	COleVariant covTrue((short)TRUE), covFalse((short)FALSE), covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
    
    	CApplication app; //Excel程序
    	CWorkbooks books; //工作簿集合
    	CWorkbook book;  //工作表
    	CWorksheets sheets;  //工作簿集合
    	CWorksheet sheet; //工作表集合
    	CRange range; //使用区域
    
    	CoUninitialize();
    
    	book.PrintPreview(_variant_t(false));
    	if (CoInitialize(NULL) == S_FALSE)
    	{
    		MessageBox("初始化COM支持库失败!");
    		return;
    	}
    
    	if (!app.CreateDispatch(_T("Excel.Application"))); //创建IDispatch接口对象
    	{
    		//MessageBox(_T("Error!"));
    
    	}
    
    
    	books = app.get_Workbooks();
    	book = books.Add(covOptional);
    
    
    	sheets = book.get_Worksheets();
    	sheet = sheets.get_Item(COleVariant((short)1));  //得到第一个工作表
    
    	CHeaderCtrl   *pmyHeaderCtrl = m_list.GetHeaderCtrl(); //获取表头
    
    	int   m_cols = pmyHeaderCtrl->GetItemCount(); //获取列数
    	int   m_rows = m_list.GetItemCount();  //获取行数
    
    
    	TCHAR     lpBuffer[256];
    
    	HDITEM   hdi; //This structure contains information about an item in a header control. This structure has been updated to support header item images and order values.
    	hdi.mask = HDI_TEXT;
    	hdi.pszText = lpBuffer;
    	hdi.cchTextMax = 256;
    
    	CString   colname;
    	CString strTemp;
    
    	int   iRow, iCol;
    	for (iCol = 0; iCol <m_cols; iCol++)//将列表的标题头写入EXCEL 
    	{
    		GetCellName(1, iCol + 1, colname); //(colname就是对应表格的A1,B1,C1,D1)
    
    		range = sheet.get_Range(COleVariant(colname), COleVariant(colname));
    
    		pmyHeaderCtrl->GetItem(iCol, &hdi); //获取表头每列的信息
    
    		range.put_Value2(COleVariant(hdi.pszText));  //设置每列的内容
    
    		int   nWidth = m_list.GetColumnWidth(iCol) / 6;
    
    		//得到第iCol+1列   
    		range.AttachDispatch(range.get_Item(_variant_t((long)(iCol + 1)), vtMissing).pdispVal, true);
    
    		//设置列宽  
    		range.put_ColumnWidth(_variant_t((long)nWidth));
    
    	}
    
    	range = sheet.get_Range(COleVariant(_T("A1 ")), COleVariant(colname));
    
    	range.put_RowHeight(_variant_t((long)50));//设置行的高度 
    
    
    	range.put_VerticalAlignment(COleVariant((short)-4108));//xlVAlignCenter   =   -4108 
    
    	COleSafeArray   saRet; //COleSafeArray类是用于处理任意类型和维数的数组的类
    	DWORD   numElements[] = { m_rows, m_cols };       //行列写入数组
    	saRet.Create(VT_BSTR, 2, numElements); //创建所需的数组
    
    	range = sheet.get_Range(COleVariant(_T("A2 ")), covOptional); //从A2开始
    	range = range.get_Resize(COleVariant((short)m_rows), COleVariant((short)m_cols)); //表的区域
    
    	long   index[2];
    
    	for (iRow = 1; iRow <= m_rows; iRow++)//将列表内容写入EXCEL 
    	{
    		for (iCol = 1; iCol <= m_cols; iCol++)
    		{
    			index[0] = iRow - 1;
    			index[1] = iCol - 1;
    
    			CString   szTemp;
    
    			szTemp = m_list.GetItemText(iRow - 1, iCol - 1); //取得m_list控件中的内容
    
    			BSTR   bstr = szTemp.AllocSysString(); //The AllocSysString method allocates a new BSTR string that is Automation compatible
    
    			saRet.PutElement(index, bstr); //把m_list控件中的内容放入saRet
    
    			SysFreeString(bstr);
    		}
    	}
    
    
    
    	range.put_Value2(COleVariant(saRet)); //将得到的数据的saRet数组值放入表格
    
    
    	book.SaveCopyAs(COleVariant(cStrFile)); //保存到cStrFile文件
    	book.put_Saved(true);
    
    
    
    	books.Close();
    
    	//
    
    	book.ReleaseDispatch();
    	books.ReleaseDispatch();
    
    	app.ReleaseDispatch();
    	app.Quit();
    }

    这里,保存文件需要配合封装类GetCellName使用,函数代码:

    void  CExcelTestDlg::GetCellName(int nRow, int nCol, CString &strName)
    
    {
    
    	int nSeed = nCol;
    
    	CString strRow;
    
    	char cCell = 'A' + nCol - 1;
    
    
    
    	strName.Format(_T("%c"), cCell);
    
    
    
    	strRow.Format(_T("%d "), nRow);
    
    	strName += strRow;
    
    }
    

    好了,这就是简单的MFC对于Excel文件的操作,如果你需要更多的操作如:

    创建表、设置是否显示 “是否保存对文件的修改”的对话框、设置指定列的列宽、设置自动适应列宽、设置当前活动表、首行冻结、首行颜色、在指定的行和列显示文本、合并单元格、获取合并单元格信息、公式读写操作、设置边框、设置单元格“文本”格式、设置对齐方式、设置字体、保存Excel文件、关闭Excel操作、创建图表......

    请参考:基于VC++的Excel封装库2.0 最新版

    展开全文
  • MFC简单地读取写入excel,内容很简单
  • MFC将数据写入excel

    千次阅读 2017-04-06 17:59:43
    简单的写入excel,若要读写等复杂的操作推荐使用OLE技术
    // 按键触发
    
    // 导出报表
    void CReportDlg::OnBnClickedButtonCheckOutExcel()
    {
    	
    	CFileDialog dlg(false, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, _T("Excel Files(*.xls)|*.xls|All Files(*.*)|*.*|"), AfxGetMainWnd());
    	CString strPath;
    	if (dlg.DoModal() == IDOK)
    	{
    		strPath = dlg.GetPathName(); 
    		if (strPath.Find(_T(".xls")) < 0) {
    			strPath += _T(".xls");
    		}
    		ReportExcel(strPath);
    	}
    }


    void CReportDlg::ReportExcel(LPCTSTR strPath)
    {
    	std::map<INT64, ReportClientInfo>::iterator it;
    
    	TRY
    	{
    		CString cs;
    		CStdioFile file(strPath, CFile::shareExclusive | CFile::modeWrite | CFile::modeCreate);
    
    		setlocale(LC_CTYPE, ("chs")); //设置中文输出
    
    		file.WriteString(_T("序号\t读卡器ID\t读卡器IP\t端口号\t连接状态\t连接上时刻\t断开连接时刻\n"));
    		
    		int row = 0;
    		ReportClientInfo temp;
    		for (it = m_reportMap.begin(); it != m_reportMap.end(); ++it)
    		{
    			temp = it->second;
    			cs.Format(_T("%d\t`%s\t%s\t%s\t%s\t%s\t%s\n"),
    				++row,
    				temp.ReaderID,
    				temp.ReaderIP,
    				temp.ReaderPort,
    				temp.ConnectStutes,
    				temp.ConnectTime,
    				temp.DisConnectTime);
    			file.WriteString(cs);
    		}
    		file.Close();
    		AfxMessageBox(_T("导出成功"));
    	}
    	CATCH_ALL(e)
    	{
    		e->ReportError();
    		return;
    	}
    	END_CATCH_ALL
    
    }



    展开全文
  • MFC操作excel

    2016-12-25 18:51:33
    MFC操作EXCEL,一个简单的读取写入EXCEL的例子。因为我用的是2016的EXCEL接口,所以低版本的可能会不能直接运行本程序,需要自己导入对应本版的EXCEL接口。
  • MFCExcel读取、写入数据

    千次阅读 2014-05-14 14:56:59
    通过MFCExcel写入数据代码: CWorkbooks books; CWorkbook book; CApplication app; CWorksheets sheets; CWorksheet sheet; CRange range; COleVariant vResult; COleVariant covOpt...

    通过MFC向Excel写入数据代码:

        CWorkbooks    books;
    	CWorkbook     book;
    	CApplication  app;
    	CWorksheets   sheets;
    	CWorksheet    sheet;
    	CRange        range;
    
    	COleVariant   vResult;
    	COleVariant   covOptional((long) DISP_E_PARAMNOTFOUND,VT_ERROR);
    
    	if (!app.CreateDispatch(_T("Excel.Application")))
    	{
    		AfxMessageBox(_T("无法启动服务器"));
    		return ;
    	}
    
    	books.AttachDispatch(app.get_Workbooks()); 
    
    	//得到Workbook  
    	book.AttachDispatch(books.Add(covOptional),true);  
    
    	//得到Worksheets  
    	sheets.AttachDispatch(book.get_Worksheets(),true);  
    	
    	sheet.AttachDispatch(sheets.get_Item(_variant_t("sheet1")),true); 
    	range=sheet.get_Range(COleVariant(_T("A1")),COleVariant(_T("A1")));
    	range.put_Value2(COleVariant(_T(" Write data to excel by MFC")));
    
    // 	for (long i=0;i<11;i++)
    // 		range.put_Item(_variant_t((long)2),_variant_t((long)i),_variant_t((long)i));//会报错,不知问题为何
    	range=sheet.get_Range(COleVariant(_T("A1")),COleVariant(_T("B1")));
    	range.Merge(_variant_t((long)0));	
    	
    	range.put_ColumnWidth(_variant_t((long)15));
    	range=sheet.get_Range(COleVariant("A1"),COleVariant("A1"));
    	//range.put_VerticalAlignment(_variant_t((long)-4018));//不能设置类range的put_VerticalAlignment属性
    	range.put_HorizontalAlignment(_variant_t((long)-4131));
    	range.put_RowHeight(COleVariant("25"));
    	
    	app.put_Visible(TRUE);
    	book.SaveCopyAs(COleVariant("e:\\test_file.xlsx"));
    	book.put_Saved(TRUE);
    
    	books.Close();
    	app.Quit();
    	range.ReleaseDispatch();
    	sheet.ReleaseDispatch();
    	sheets.ReleaseDispatch();
    	book.ReleaseDispatch();
    	books.ReleaseDispatch();
    	app.ReleaseDispatch();
    

     

    通过MFC向Excel读取数据代码:

            CApplication app;  
            CWorkbooks books;  
            CWorkbook book;  
            CWorksheets sheets;  
            CWorksheet sheet;  
            CRange range;  
            
            LPDISPATCH lpDisp;  
            COleVariant vResult;  
            COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);  
            
    		if(!app.CreateDispatch(_T("Excel.Application")))  
            {  
            
    			AfxMessageBox(_T("无法启动Excel服务器!"));  
                return;  
            }  
           books.AttachDispatch(app.get_Workbooks());  
           lpDisp = books.Open("E:\\test_big_file.xlsx",covOptional, covOptional, covOptional, covOptional, 
           covOptional,covOptional, covOptional, covOptional, covOptional, covOptional,covOptional, covOptional, 
           covOptional,covOptional);  
              
            //得到Workbook  
            book.AttachDispatch(lpDisp);  
    
            //得到Worksheets  
            sheets.AttachDispatch(book.get_Worksheets());  
           
            //得到当前活跃sheet  
            //如果有单元格正处于编辑状态中,此操作不能返回,会一直等待  
           lpDisp=book.get_ActiveSheet();
    	   sheet.AttachDispatch(lpDisp);
    			
    		//读取4行4列单元格的值  
           range.AttachDispatch(sheet.get_Cells());  
           range.AttachDispatch(range.get_Item (COleVariant((long)4),COleVariant((long)4)).pdispVal );  
            /*COleVariant*/ 
    		vResult =range.get_Value2();  
            CString str;  
            if(vResult.vt == VT_BSTR) //字符串  
            {  
                str=vResult.bstrVal;  
            }  
            else if (vResult.vt==VT_R8) //8字节的数字  
            {  
               str.Format("%f",vResult.dblVal);  
            }  
           
            else if(vResult.vt==VT_DATE) //时间格式 
            { 
              SYSTEMTIME st; 
              VariantTimeToSystemTime(vResult.date, &st); 
            } 
            else if(vResult.vt==VT_EMPTY) //单元格空的 
            { 
               str=""; 
            } 
    
            books.Close();   
            app.Quit();             // 退出  
            //释放对象    
            range.ReleaseDispatch();  
            sheet.ReleaseDispatch();  
            sheets.ReleaseDispatch();  
            book.ReleaseDispatch();  
            books.ReleaseDispatch();  
            app.ReleaseDispatch();  
           // OnOK();  
            MessageBox(str);
    

     

    books = app.get_Workbooks();

    //books.AttachDispatch(app.get_Workbooks());可代替上面一行

    book = books.Add(covOptional);

    //book.AttachDispatch(books.Add(covOptional),true);可代替上面一行

    sheets=book.get_Worksheets(); VT_ERROR);

    //sheets.AttachDispatch(book.get_Worksheets(),true);可代替上面一行

    sheet =sheets.get_Item(COleVariant((short)1));

    //sheet.AttachDispatch(sheets.get_Item(_variant_t("sheet1")),true);可代替上面一行

    

    扫描二维码,关注“小眼睛的梦呓”公众号,在手机端查看文章
    扫描二维码,关注“清远的梦呓”公众号,在手机端查看文章
    展开全文
  • MFCExcel读取、写入数据(OLE/COM)

    千次阅读 2017-06-02 12:47:39
    原文链接:... 通过MFCExcel写入数据代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

    原文链接:http://blog.csdn.net/u014023993/article/details/25799877

    通过MFC向Excel写入数据代码:

      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
     24
     25
     26
     27
     28
     29
     30
     31
     32
     33
     34
     35
     36
     37
     38
     39
     40
     41
     42
     43
     44
     45
     46
     47
     48
     49
     50
     51
               
    CWorkbooks books;
    CWorkbook book;
    CApplication app;
    CWorksheets sheets;
    CWorksheet sheet;
    CRange range;
    COleVariant vResult;
    COleVariant covOptional((long) DISP_E_PARAMNOTFOUND,VT_ERROR);
    if (!app.CreateDispatch(_T("Excel.Application")))
    {
    AfxMessageBox(_T("无法启动服务器"));
    return ;
    }
    books.AttachDispatch(app.get_Workbooks());
    //得到Workbook
    book.AttachDispatch(books.Add(covOptional),true);
    //得到Worksheets
    sheets.AttachDispatch(book.get_Worksheets(),true);
    sheet.AttachDispatch(sheets.get_Item(_variant_t("sheet1")),true);
    range=sheet.get_Range(COleVariant(_T("A1")),COleVariant(_T("A1")));
    range.put_Value2(COleVariant(_T(" Write data to excel by MFC")));
    // for (long i=0;i<11;i++)
    // range.put_Item(_variant_t((long)2),_variant_t((long)i),_variant_t((long)i));//会报错,不知问题为何
    range=sheet.get_Range(COleVariant(_T("A1")),COleVariant(_T("B1")));
    range.Merge(_variant_t((long)0));
    range.put_ColumnWidth(_variant_t((long)15));
    range=sheet.get_Range(COleVariant("A1"),COleVariant("A1"));
    //range.put_VerticalAlignment(_variant_t((long)-4018));//不能设置类range的put_VerticalAlignment属性
    range.put_HorizontalAlignment(_variant_t((long)-4131));
    range.put_RowHeight(COleVariant("25"));
    app.put_Visible(TRUE);
    book.SaveCopyAs(COleVariant("e:\\test_file.xlsx"));
    book.put_Saved(TRUE);
    books.Close();
    app.Quit();
    range.ReleaseDispatch();
    sheet.ReleaseDispatch();
    sheets.ReleaseDispatch();
    book.ReleaseDispatch();
    books.ReleaseDispatch();
    app.ReleaseDispatch();
    来自CODE的代码片
    .cpp

    通过MFC向Excel读取数据代码:

      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
     24
     25
     26
     27
     28
     29
     30
     31
     32
     33
     34
     35
     36
     37
     38
     39
     40
     41
     42
     43
     44
     45
     46
     47
     48
     49
     50
     51
     52
     53
     54
     55
     56
     57
     58
     59
     60
     61
     62
     63
     64
     65
     66
     67
     68
     69
               
    CApplication app;
    CWorkbooks books;
    CWorkbook book;
    CWorksheets sheets;
    CWorksheet sheet;
    CRange range;
    LPDISPATCH lpDisp;
    COleVariant vResult;
    COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
    if(!app.CreateDispatch(_T("Excel.Application")))
    {
    AfxMessageBox(_T("无法启动Excel服务器!"));
    return;
    }
    books.AttachDispatch(app.get_Workbooks());
    lpDisp = books.Open("E:\\test_big_file.xlsx",covOptional, covOptional, covOptional, covOptional,
    covOptional,covOptional, covOptional, covOptional, covOptional, covOptional,covOptional, covOptional,
    covOptional,covOptional);
    //得到Workbook
    book.AttachDispatch(lpDisp);
    //得到Worksheets
    sheets.AttachDispatch(book.get_Worksheets());
    //得到当前活跃sheet
    //如果有单元格正处于编辑状态中,此操作不能返回,会一直等待
    lpDisp=book.get_ActiveSheet();
    sheet.AttachDispatch(lpDisp);
    //读取4行4列单元格的值
    range.AttachDispatch(sheet.get_Cells());
    range.AttachDispatch(range.get_Item (COleVariant((long)4),COleVariant((long)4)).pdispVal );
    /*COleVariant*/
    vResult =range.get_Value2();
    CString str;
    if(vResult.vt == VT_BSTR) //字符串
    {
    str=vResult.bstrVal;
    }
    else if (vResult.vt==VT_R8) //8字节的数字
    {
    str.Format("%f",vResult.dblVal);
    }
    else if(vResult.vt==VT_DATE) //时间格式
    {
    SYSTEMTIME st;
    VariantTimeToSystemTime(vResult.date, &st);
    }
    else if(vResult.vt==VT_EMPTY) //单元格空的
    {
    str="";
    }
    books.Close();
    app.Quit(); // 退出
    //释放对象
    range.ReleaseDispatch();
    sheet.ReleaseDispatch();
    sheets.ReleaseDispatch();
    book.ReleaseDispatch();
    books.ReleaseDispatch();
    app.ReleaseDispatch();
    // OnOK();
    MessageBox(str);
    来自CODE的代码片
    .cpp

    books = app.get_Workbooks();

    //books.AttachDispatch(app.get_Workbooks());可代替上面一行

    book = books.Add(covOptional);

    //book.AttachDispatch(books.Add(covOptional),true);可代替上面一行

    sheets=book.get_Worksheets(); VT_ERROR);

    //sheets.AttachDispatch(book.get_Worksheets(),true);可代替上面一行

    sheet =sheets.get_Item(COleVariant((short)1));

    //sheet.AttachDispatch(sheets.get_Item(_variant_t("sheet1")),true);可代替上面一行

     
    
    展开全文
  • mfc操作excel

    2011-05-23 20:17:07
    使用vc++ mfc操作excel,包括读取,写入,设置字体,对应行和列操作等
  • 使用MFC操作Excel写入

    万次阅读 2007-06-25 16:58:00
    对ok按钮添加相应函数,加入如下代码,在D盘增加TestExcel.xls文件,运行后D盘的Excel文件中的sheet1中的第一个单元格会被加入abcd。 if(!app.CreateDispatch("Excel.Application"))  {  MessageBox("excel ...
  • MFC读写EXCEL表格

    2017-05-22 20:02:04
    MFC读写EXCEL表格数据
  • MFC操作EXCEL

    2011-09-11 14:29:01
    新建excel文档,写入excel表格,字体加粗,连接控件
  • MFC 读写 excel

    2016-10-16 21:11:48
    建立MFC工程,导入Application Range Workbook Worksheet Workbooks Worksheets等excel服务,读去输入的excel,生成新的excel文件。代码应某人要求而写,在debug目录下有使用应用自动生成的excel示例。
  • mfc写入xls文件示例

    2018-09-05 21:04:15
    mfc写入xls文件示例,VS 2008亲测可以运行。但是后来用vs2017打开过一次,sln被升级了。可以参照我的博客新建一个同名工程,再操作一遍,把其中的cpp文件,h文件和资源文件拷贝到新的工程里编译运行即可。
  • MFC操作excel边框

    2013-04-25 10:42:05
    MFC操作excel边框,添加边框
  • mfc 操作excel文档

    2011-05-23 20:18:01
    使用vc++ mfc操作excel,包括读取,写入,设置字体,对应行和列操作等。
  • 使用MFC操作EXCEL文件

    2012-11-18 12:43:47
    使用MFC操作EXCEL文件 MFC中使用EXCEL方法及源码 仅供参考
  • MFCEXCEL

    2019-11-18 11:04:07
    环境:Windows 7 旗舰版,32位操作系统,VC6.0,MFC,WPS,接下来以新建一个EXCEL写入“Hello Excel”为例说明具体用法 第一步:建立一个OLE自动化工程 1,首先新建一个对话框,并加上一个按钮“新建”,其功能...
  • mfc读取excel文件

    热门讨论 2011-05-23 20:18:45
    使用vc++ mfc操作excel,包括读取,写入,设置字体,对应行和列操作等,。
  • MFC操作EXCEL例子

    千次阅读 2016-12-25 19:02:20
    1.新建一个MFC工程(对话框)新建过程中,记得要选择自动化。如图: 之后会自动添加如下头文件#include <afxdisp.h> // MFC 自动化类2.用类向导添加EXCEL接口 如图: 1. 2. 3.找到EXCEL.EXE所在的路
  • InitExcelApp(); OpenExcelApp(); NewExcelBook(); CheckType();... m_ExlRge = m_ExlSheet.get_Range(COleVariant(_T("A1")), COleVariant(_T("A1")));... m_ExlRge.put_Value2(COleVariant(_T("图片名称")));...
  • 对ok按钮添加相应函数,加入如下代码,在D盘增加TestExcel.xls文件,运行后D盘的Excel文件中的sheet1中的第一个单元格会被加入abcd。 if(!app.CreateDispatch("Excel.Application"))  {  MessageBox("excel error...
  • VS2010编写,MFC操作EXCEL2010的简单封装,包含写入内容,批量导入数据,设置字体、字体颜色、单元格背景颜色、合并单元格、居中、边框、插入图片等基本操作
  • MFC操作Excel表格源码

    2018-01-14 12:20:32
    生成一个excel文件,该文件可以使用office2007打开,也可以使用office2003打开,而不弹出 提示; 实现数据写入自动换行,换列的操作; 实现写入实数、复数、字符串的操作; 实现在指定位置,指定范围写入的操作。 该...
  • 在VC6.0中使用MFC实现Excel自动化:写入数据绘制图表 环境说明: Windows XP VC++ 6.0 Excel 2003 详细过程: http://zhangliancheng.com
  • 利用MFC读写Excel文件

    热门讨论 2013-03-20 01:18:31
    利用MFC界面对Excel进行读写,通过写入、读取界面对已有Excel数据进行相应的操作
  • MFC读写Excel 工作表

    2019-06-14 14:16:05
    最近工作需要用MFC操作Excel文件,在网上查阅了资料之后,自己也总结了几个步骤, 新建MFC对话框工程,之后再资源视图的对话框中右击,选择类向导,在新的对话框右上角点击"类型库中的MFC类(T),得到如下对话框所...
  • MFCexcel的操作

    2013-05-24 14:30:26
    该程序采用mfc编程的方式实现了对excel的操作,读取、写入以及更改一些基本的功能
  • VS2008 MFC操作EXCEL

    热门讨论 2009-11-19 11:13:59
    这个是用网上找来的封装类写的 能够简单的对EXCEL进行读写 这个能够从TXT文档重读取数据在写入EXCEL 里面内附TXT格式 这个对EXCEL2000,2003,2007都能操作 不过写读的格式比较少 只能进行基本操作 里面内附类下载的...
  • 3. 在定时器中,不断接收数据,写入excel表格,写入的部分代码 for(jColumn=1;jColumn<=20;jColumn++) range.SetItem(_variant_t(Count),_variant_t(jColumn),_variant_t(ExcelString[jColumn-1])); 4.定义...
  • CString sDriver = _T("MICROSOFT EXCEL DRIVER (*.XLS)"); // Excel驱动名 CString sExcelFile = _T("C:\\Users\\LEGION\\Desktop\\demo7.xls"); // 要建立的Excel文件 CString sSql; TRY { // 创建进行存取的字符...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,395
精华内容 558
关键字:

mfc写入excel