1.读取(导入)
(1)创建excel服务器,代码为:
if(!app.CreateDispatch("Excel.Application"))
{
AfxMessageBox("无法启动Excel服务器!");
return;
}
(2)打开.xls文件,代码为:
books.AttachDispatch(app.get_Workbooks());
lpDisp = books.Open("C:\\Documents and Settings\\刘帅政\\桌面\\in.xls",
covOptional, covOptional, covOptional, covOptional, covOptional,
covOptional, covOptional, covOptional, covOptional, covOptional,
covOptional, covOptional, covOptional, covOptional );
(3)得到Workbook,代码为:
book.AttachDispatch(lpDisp);
(4)得到Worksheet,代码为:
sheets.AttachDispatch(book.get_Worksheets());
(5)得到当前活跃的Worksheet,代码为:
lpDisp=book.get_ActiveSheet();
sheet.AttachDispatch(lpDisp);
(6)读取第一个单元格的值,代码为:
range.AttachDispatch(sheet.get_Cells());
range.AttachDispatch(range.get_Item(COleVariant((long)1),COleVariant((long)1)).pdispVal);
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_EMPTY) //单元格空的
{
str="";
}
当然在添加上述代码时应该先添加变量,代码为:
CApplication app;
CWorkbooks books;
CWorkbook book;
CWorksheets sheets;
CWorksheet sheet;
CRange range;
CRange iCell;
LPDISPATCH lpDisp;
COleVariant vResult;
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
2.导出
(1)得到保存文件名,代码为:
fname="C:\\Documents and Settings\\刘帅政\\桌面\\out.xls";
(2)创建excel文件,代码为:
objApp.m_bAutoRelease=true;
if(!objApp.CreateDispatch("Excel.Application"))
{
AfxMessageBox("Failed to connect to Excel!");
return;
}
(3)得到Workbooks,代码为:
objBooks=objApp.get_Workbooks();
(4)打开excel文件,代码为:
objBook.AttachDispatch(objBooks.Add(_variant_t("")));
objSheets=objBook.get_Sheets();
(5)定义第一个excel对象,代码为:
objSheet=objSheets.get_Item((_variant_t)short(1));
sheetname="sheetname";
objSheet.put_Name(sheetname);
objSheet.Activate();
objRange.AttachDispatch(objSheet.get_Cells(),true);
(6)设定写入A1单元,代码为:
s1.Format("A1");
e1=s1;
objRange1=objSheet.get_Range(_variant_t(s1),_variant_t(s1));
注:如果想要写入其他单元,只需改变其标志位
s="111.11";
注:s是我们要写入的东西,如果s是一个字符串,则为“‘111”,若是数字,则为“111”
(7)将s写入A1,代码为:
objRange1.put_FormulaR1C1(_variant_t(s));
(8)保存文件,代码为:
objBook.SaveAs(_variant_t(fname),varFormat,covOptional,covOptional,covOptional,covOptional,0,covOptional,covOptional,covOptional,covOptional,covOptional);
objApp.Quit();
objRange.ReleaseDispatch();
objSheet.ReleaseDispatch();
objSheets.ReleaseDispatch();
objBook.ReleaseDispatch();
objBooks.ReleaseDispatch();
当然最后我们在导出前也不能忘了定义变量,代码为:
CString sss,s1,s2,e1,e2,strSQL;
CStringArray sa;
CString fname,fname1, sheetname,s;
CApplication objApp;
CWorkbooks objBooks;
CWorkbook objBook;
CWorksheets objSheets;
CWorksheet objSheet;
CRange objRange,objRange1,objRange2;
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
COleVariant covTrue((short)TRUE), covFalse((short)FALSE),\
varFormat((short)-4143),varCenter((short)-4108),varLeft((short)-4131),varText("TEXT",VT_BSTR),var,\
varRange1("A1",VT_BSTR),varRange2("D1",VT_BSTR);