0

我正在使用 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 工作簿,所有工作簿都带有对表/绘图。但我希望它们都在一个工作簿中。顺便说一句,我在这一行之后放了 for 循环: XL->Visible=true; 并在 CoUninitialize(); 之前完成它。

谢谢您的帮助!

4

1 回答 1

0

嗯,我不知道 Excel COM API,自从我上次自己使用 COM 以来已经有很长时间了,但是,我认为很明显,那些陈述

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

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

鉴于此声明

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

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

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

于 2012-06-12T11:14:23.853 回答