1.C#方式
1 _Application excelApp; 2 try 3 { 4 excelApp = (_Application)Marshal.GetActiveObject("Excel.Application"); 5 } 6 catch(Exception) 7 { 8 // this is important. If Excel is not running, GetActiveObject will throw 9 // an exception 10 excelApp = null; 11 } 12 if( excelApp == null ) 13 { 14 excelApp = new ApplicationClass(); 15 }
2.VB
1 Dim xlsApp As Application 2 Dim xlsWorkSheet As Worksheet 3 Dim xlsRange As Range 4 Set xlsApp = CreateObject("Excel.Application.8") 5 xlsApp.Visible = True 6 xlsApp.SheetsInNewWorkbook = 1 7 With xlsApp.Workbooks 8 If (.Count = 0) Then 9 .Add 10 End If 11 End With 12 Set xlsWorkSheet = xlsApp.Worksheets.Item(1) 13 xlsWorkSheet.Range("A1").Value = "Easy"
3.MFC
1 LPDISPATCH pDispatch = NULL; 2 LPUNKNOWN pUnknown = NULL; 3 CLSID clsid; 4 _Application appExcel; 5 LPDISPATCH pWorkbooks = NULL; 6 Workbooks Workbooks; 7 LPDISPATCH pWorkbook = NULL; 8 LPDISPATCH pWorksheets = NULL; 9 Sheets Worksheets; 10 LPDISPATCH pWorksheet = NULL; 11 _Worksheet Worksheet; 12 LPDISPATCH pWorkRange = NULL; 13 Range WorkRange; 14 CLSIDFromProgID( L"Excel.Application.8", &clsid ); 15 // 看指定的对象是否已经运行 16 if ( SUCCEEDED(GetActiveObject( 17 clsid, NULL, &pUnknown )) ) 18 { 19 VERIFY( SUCCEEDED(pUnknown->QueryInterface( 20 IID_IDispatch, (void**)&pDispatch )) ); 21 ASSERT( pDispatch ); 22 appExcel.AttachDispatch( pDispatch ); 23 pUnknown->Release(); 24 } 25 else 26 { 27 // 没运行。那就建立Excel.Application.8对象 28 if ( ! appExcel.CreateDispatch( 29 (LPCTSTR)"Excel.Application.8") ) 30 { 31 MessageBox( 32 "can not found the Excel.Application.8 object!"); 33 return; 34 } 35 } 36 // 显示并激活Excel窗口 37 // XLMAIN 是用Spy++查到的 38 HWND hWndExcelMain = ::FindWindow( "XLMAIN", NULL ); 39 ASSERT( hWndExcelMain ); 40 ::ShowWindow( hWndExcelMain, SW_SHOW ); 41 ::UpdateWindow( hWndExcelMain ); 42 ::BringWindowToTop( hWndExcelMain ); 43 // 设置在一个新工作簿中的工作表数为1 44 appExcel.SetSheetsInNewWorkbook( 1 ); 45 // 得到工作簿集的IDispatch,并绑定到Workbooks对象 46 pWorkbooks = appExcel.GetWorkbooks(); 47 ASSERT( pWorkbooks ); 48 Workbooks.AttachDispatch( pWorkbooks ); 49 // 如果工作簿集是空的,那就添加一个工作簿 50 if ( Workbooks.GetCount() == (long)0 ) 51 { 52 pWorkbook = Workbooks.Add(); 53 ASSERT( pWorkbook ); 54 } 55 // 得到工作表集(同上) 56 pWorksheets = appExcel.GetWorksheets(); 57 ASSERT( pWorksheets ); 58 Worksheets.AttachDispatch( pWorksheets ); 59 // 激活第一个工作表 60 pWorksheet = Worksheets.GetItem( 61 COleVariant((short)1) ); 62 ASSERT( pWorksheet ); 63 Worksheet.AttachDispatch( pWorksheet ); 64 Worksheet.Select( COleVariant((short)TRUE) ); 65 // 得到A1区域的引用 66 pWorkRange = Worksheet.GetRange( 67 COleVariant("A1"), COleVariant("A1")); 68 WorkRange.AttachDispatch( pWorkRange ); 69 WorkRange.SetValue( 70 COleVariant("多简单!就是麻烦一点儿!") ); 71 if ( pWorkbook ) 72 73 pWorkbook->Release();
原文:https://www.cnblogs.com/unicornsir/p/12718739.html