C ++ Excel命令在同一工作簿中打开新工作表

时间:2012-06-12 10:39:01

标签: c++ excel for-loop

我正在使用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();

...表示我用数据填充表格的代码的一部分。 当我运行它时,它只创建一个工作表和一个绘图的新工作簿。但是当我想把它放在for循环中时,它会打开多个excel工作簿,所有这些工作簿都有对页/情节。但我希望他们都在一本工作簿中。 顺便说一下,我在这一行之后进行了循环:XL-> Visible = true;并在CoUninitialize();。

之前完成

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

嗯,我不知道Excel COM API,自从我上次使用COM以来已经很久了,但是,我认为很明显,这些陈述

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

指示Excel添加一个新工作簿(工作簿是复数形式,其Add方法可以合理地假设创建一个新工作簿),然后在其中创建一个新工作表。

鉴于此声明

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

我假设应该还有XL->ActiveWorkbook->Sheets方法Add(),它会在当前工作簿中创建一个新工作表,并返回指向它的指针。因此,我不是XL->Workbooks->Add而是尝试XL->ActiveWorkbook->Sheets->Add()在当前活动的工作簿中创建新工作表。

请注意,我没有阅读任何有关此答案的文档,这只是我对方法命名和了解Microsoft OOP方案工作方式(多年前)的假设。