欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

vs2010操作excel 需要安装office2010

程序员文章站 2023-12-28 14:12:28
...


1. 在Vs2010里创建一个MFC工程
2、打开ClassWizard窗口(查看—>建立类向导),选择Automation,单击AddClass按钮,选择Froma type library...,弹出文件选择对话框,之后定位到
C:\Program Files\MicrosoftOffice\OFFICE14\EXCEL.EXE。
添加 CApplication
Cfont0
CRange
CWorkbook
CWorkbooks
CWorksheet
CWorksheets

并在每个头文件中添加#include <afxdisp.h>

//以下是本人在程序中初始化函数中对表格的初始化 工作

     CApplication app;  
	CWorkbooks books;  
	CWorkbook book;  
	CWorksheets sheets;  
	CWorksheet sheet;  
	CRange range;  
	CRange cols;  
	CFont0 font;  






	LPDISPATCH lpDisp;
	HRESULT hr; 
	hr = CoInitialize(NULL); 
	//ASSERT(!FAILED(hr)); 
	if(FAILED(hr)) 
	{ 
		AfxMessageBox("Failed to call Coinitialize()"); 
	}
	COleVariant covOptional((long)
		DISP_E_PARAMNOTFOUND,VT_ERROR);


	if (!app.CreateDispatch(_T("Excel.Application")))
	{
		this->MessageBox(_T("无法创建Excel应用"));
		return;
	}
	try
	{
		books = app.get_Workbooks();
	}


	catch (CException* e)
	{
		TCHAR   szError[1024];   
		e->GetErrorMessage(szError,1024);   //  e.GetErrorMessage(szError,1024); 
		::AfxMessageBox(szError); 
	}




	books = app.get_Workbooks();
	lpDisp = books.Open(csFilename,covOptional
		,covOptional,covOptional,covOptional
		,covOptional,covOptional,covOptional
		,covOptional,covOptional,covOptional
		,covOptional,covOptional,covOptional
		,covOptional);
	book=books.Add(covOptional);
	book.AttachDispatch(lpDisp);
	sheets = book.get_Sheets();

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

	range.AttachDispatch(sheet.get_Cells(),TRUE);//加载所有单元格 
	font.AttachDispatch(range.get_Font());  
	font.put_Name(_variant_t(_T("宋体")));  
	font.put_Size(_variant_t(12));  
	//	font.put_Color(_variant_t(RGB(255, 0, 0))); 
	//设置对其方式 中间对其
	range.put_HorizontalAlignment(_variant_t((long)-4108));
	//设置行高
	range.put_RowHeight(COleVariant((long)20));
	//设置列宽
	range=sheet.get_Range(COleVariant("A1"),COleVariant("A1"));
	range.put_ColumnWidth(_variant_t(10));  
	range=sheet.get_Range(COleVariant("B1"),COleVariant("B1"));
	range.put_ColumnWidth(_variant_t(30));  
	range=sheet.get_Range(COleVariant("C1"),COleVariant("C1"));
	range.put_ColumnWidth(_variant_t(10));  
	range=sheet.get_Range(COleVariant("D1"),COleVariant("D1"));
	range.put_ColumnWidth(_variant_t(30));  
	range=sheet.get_Range(COleVariant("E1"),COleVariant("E1"));
	range.put_ColumnWidth(_variant_t(15));  
	range=sheet.get_Range(COleVariant("F1"),COleVariant("F1"));
	range.put_ColumnWidth(_variant_t(15));  
	range=sheet.get_Range(COleVariant("G1"),COleVariant("G1"));
	range.put_ColumnWidth(_variant_t(30));  
	range=sheet.get_Range(COleVariant("H1"),COleVariant("H1"));
	range.put_ColumnWidth(_variant_t(30));  
	range=sheet.get_Range(COleVariant("I1"),COleVariant("I1"));
	range.put_ColumnWidth(_variant_t(20));  


    //保存并释放
	book.Save();
	app.Quit();
 	app.ReleaseDispatch();
 	book.ReleaseDispatch();
 	books.ReleaseDispatch();
 	sheet.ReleaseDispatch();
 	sheets.ReleaseDispatch();
 	range.ReleaseDispatch();

该函数在线程中调用,插入并更新数据

void CPackingDlg::Insert_Data1(int row)
{
	
	CApplication app;  
	CWorkbooks books;  
	CWorkbook book;  
	CWorksheets sheets;  
	CWorksheet sheet;  
	CRange range;  
	CRange cols;  
	CFont0 font;  

	CString csFilename="";
	Path = Cs_Zhiling + GongXu;
	GetCurrentPath(g_szWorkDir);
	csFilename.Format("%s\\%s.xls", g_szWorkDir,Path);
	LPDISPATCH lpDisp;
	HRESULT hr; 
	hr = CoInitialize(NULL); 
	//ASSERT(!FAILED(hr)); 
	if(FAILED(hr)) 
	{ 
		AfxMessageBox("Failed to call Coinitialize()"); 
		MyListShowSystem("Failed to call Coinitialize()");
	}
	COleVariant covOptional((long)
		DISP_E_PARAMNOTFOUND,VT_ERROR);

	if (!app.CreateDispatch(_T("Excel.Application")))
	{
		this->MessageBox(_T("无法创建Excel应用"));
		MyListShowSystem("无法创建Excel应用");
		return;
	}
	try
	{
		books = app.get_Workbooks();
	}

	catch (CException* e)
	{
		TCHAR   szError[1024];   
		e->GetErrorMessage(szError,1024);   //  e.GetErrorMessage(szError,1024); 
		::AfxMessageBox(szError); 
	}

//	app.put_Visible(TRUE);  
//	app.put_UserControl(TRUE); 

	books = app.get_Workbooks();
 	lpDisp = books.Open(csFilename,covOptional
 		,covOptional,covOptional,covOptional
 		,covOptional,covOptional,covOptional
 		,covOptional,covOptional,covOptional
 		,covOptional,covOptional,covOptional
 		,covOptional);
	book=books.Add(covOptional);
	book.AttachDispatch(lpDisp);
	sheets = book.get_Sheets();
	sheet = sheets.get_Item(COleVariant((short)1));
	CString str= "",strA= "",strB= "",strC= "",strD= "",strE= "",strF= "",strG= "",strH= "",strI= "",temp = "";
	str.Format("%d",row+1);
	strA = "A" + str;
	strB = "B" + str;
	strC = "C" + str;
	strD = "D" + str;
	strE = "E" + str;
	strF = "F" + str;
	strG = "G" + str;
	strH = "H" + str;

	strI = "I" + str;


	range=sheet.get_Range(COleVariant(strA),COleVariant(strA));//序号
	temp.Format("%d",Infor_detail.XuHao);
	range.put_Value2(COleVariant(temp));

	range=sheet.get_Range(COleVariant(strB),COleVariant(strB));//制令
	range.put_Value2(COleVariant(Infor_detail.ZhiLing));


	range=sheet.get_Range(COleVariant(strC),COleVariant(strC));//批次
	temp.Format("%d",Infor_detail.PiCi);
	range.put_Value2(COleVariant(temp));


	range=sheet.get_Range(COleVariant(strD),COleVariant(strD));//条形码
	range.put_Value2(COleVariant(Infor_detail.Code));


  	range=sheet.get_Range(COleVariant(strE),COleVariant(strE));//产品序号
  	range.put_Value2(COleVariant(Infor_detail.product_XuHao));

	range=sheet.get_Range(COleVariant(strF),COleVariant(strF));//工序
	range.put_Value2(COleVariant(Infor_detail.GongXu));

	range=sheet.get_Range(COleVariant(strG),COleVariant(strG));//入时间
	range.put_Value2(COleVariant(Infor_detail.time_in));


	book.Save();
	app.Quit();
	app.ReleaseDispatch();
	book.ReleaseDispatch();
	books.ReleaseDispatch();
	sheet.ReleaseDispatch();
	sheets.ReleaseDispatch();
	range.ReleaseDispatch();
	
}






上一篇:

下一篇: