我已经有了这个代码
Excel::_ApplicationPtr app("Excel.Application");
app->Visible[0] = false;
Excel::_WorkbookPtr book = app->Workbooks->Add();
Excel::_WorksheetPtr sheet = book->Worksheets->Item[1];
RangePtr pRange = sheet->Cells;
RangePtr pCell;
pCell = pRange->Item[1][1]; // A1
pCell->Value2 = "1";
pCell = pRange->Item[1][2]; // B1
pCell->Value2 = "1";
pCell = pRange->Item[1][3]; // C1
pCell->Value2 = "10";
pCell = pRange->Item[2][1]; // A2
pCell->Value2 = "3";
pCell = pRange->Item[2][2]; // B2
Cell->Value2 = "1";
pCell = pRange->Item[2][3]; // C2
pCell->Value2 = "20";
下一个
Excel::RangePtr pBeginRange = pRange->Item[1][1];
Excel::RangePtr pEndRange = pRange->Item[5][9];
Excel::RangePtr pTotalRange = sheet->Range[(Excel::Range *)pBeginRange][(Excel::Range *)pEndRange];
_ChartPtr pChart2 = book->Charts->Add();
pChart2->ChartType = xlBubble3DEffect;
pChart2->SetSourceData((Excel::Range *)pTotalRange, (long)Excel::xlColumns);
如何在 Excel 图表中禁用自动创建 SeriesCollection。我想手动设置范围。在自动创建中,所有 SeriesCollection 在第一列中都有 XValues。但我不需要它。
最佳答案
我也遇到了同样的问题。根据实验,我认为正在发生以下情况:
当您使用以下代码在 VBA 中创建新图表时
Dim chSheet As Chart
Set chSheet = Charts.Add
我敢打赌,Excel 会在您从开发人员窗口执行代码时自动查看您的光标选择了哪个工作表,并搜索它认为可能是图表值范围的最近数据集。然后它会自动填充到图表中。到目前为止,我发现的唯一解决方法是执行以下代码,在创建图表后立即删除图表上系列集合对象中的所有系列对象。触摸计数器直观但有效...
Public Sub DeleteChartSeries(chartSheet As Chart)
'Shorter but perhaps less clean way of writing the code compared to below
Do Until chartSheet.SeriesCollection.Count = 0
chartSheet.SeriesCollection(1).Delete
Loop
'With chartSheet
' Do Until .seriesCollection.Count = 0
' .seriesCollection(1).Delete
' Loop
'End With
End Sub
关于c++ - 如何在Excel Chart中禁用自动创建SeriesCollection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5015938/