基本导入和导出excel

来源:互联网 发布:美工助理面试自我介绍 编辑:程序博客网 时间:2024/06/06 10:48

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);

 

原创粉丝点击