我正在使用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();。
之前完成感谢您的帮助!
答案 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方案工作方式(多年前)的假设。