2012-06-12 7 views
0

C++을 사용하여 Excel 차트를 만듭니다. 내 문제는 같은 통합 문서에 여러 차트를 만들려는 것입니다. ...동일한 통합 문서에서 새 시트를 여는 C++ Excel 명령

CoInitialize(NULL); 
    Excel::_ApplicationPtr XL; 
    XL.CreateInstance(L"Excel.Application"); 
    XL->Visible=true; 
      XL->Workbooks->Add(Excel::xlWorksheet); 
    Excel::_WorksheetPtr pSheet = XL->ActiveSheet; 
      pSheet->Name = "Name"; 
      ... 
      Excel::_ChartPtr pChart=XL->ActiveWorkbook->Charts->Add(); 
      pChart->Name =arr1; 
      ... 
      CoUninitialize(); 

나 데이터 테이블을 채우기 코드의 일부를 나타냅니다 이 내 코드입니다. 한 번 실행하면 하나의 워크 시트와 하나의 플롯으로 새 통합 문서가 만들어집니다. 하지만 루프 안에 넣으려는 경우 여러 장의 Excel 통합 문서를 열 수 있습니다. 모두 통합 시트/플롯입니다. 그러나 나는 그들 모두가 하나의 워크 북에 들어가기를 바랍니다. Btw,이 줄 뒤에 루프 넣기 : XL-> Visible = true; CoUninitialize();하기 전에 완료하십시오.

도움 주셔서 감사합니다.

+0

정말 C입니까? @@ – Jokester

+0

죄송합니다, 임씨는 C에서 근무하지만 ++,하지만 난 단지 C 명령을 알고 ... 그리고 난이 주제에 대한 짧은 튜토리얼을 발견, 그래서 내가 코드에서 아무것도 변경하는 방법을 몰라. 내가 대답을 – speedyTeh

답변

0

글쎄, 난, 그것은 분명 생각 나는 엑셀 COM API를 모르는, 내가 마지막에게 COM에게 자신을 사용한 이후로는 나이이었다,하지만 그 문

XL->Workbooks->Add(Excel::xlWorksheet); 
Excel::_WorksheetPtr pSheet = XL->ActiveSheet; 
pSheet->Name = "Name"; 

지시합니다 엑셀 새로운 통합 문서를 추가하려면 (통합 문서는 복수형이고 Add 메서드는 새로운 것을 작성하는 것이 합리적입니다), 새 시트를 만듭니다.

내가 그것에 대한 포인터를 반환, 현재 통합 문서에 새 시트를 생성하는 방법 Add() 가진 XL->ActiveWorkbook->Sheets도해야 가정이 문

Excel::_ChartPtr pChart = XL->ActiveWorkbook->Charts->Add(); 

을 감안할 때. 따라서 XL->Workbooks->Add 대신 XL->ActiveWorkbook->Sheets->Add()을 시도하면 현재 활성 통합 문서에 새 시트가 만들어집니다.

이 대답에 대한 설명서를 읽지는 않았지만이 방법은 메서드 이름 지정과 Microsoft OOP 스키마가 작동하는 방식 (몇 년 전)을 알고 있다는 가정에 불과합니다.

+0

고마워, 나는 당신과 동의하지만 올바른 구문을 몰라. – speedyTeh

+0

@ user1151026 : 알다시피 – datenwolf

+0

@ user1151026 : 알다시피, 구문에는 특별한 것이 없습니다. 본질적으로 구조에 대한 포인터를 다루고 있습니다. 데이터 요소는 함수 포인터입니다. C++ 및 클래스 인스턴스와 유일한 차이점은 클래스 멤버 함수는 'this'라는 숨겨진 첫 번째 매개 변수로 클래스 데이터 "구조"에 대한 포인터를 수신한다는 것입니다. – datenwolf

관련 문제