c++ - 如何在Excel Chart中禁用自动创建SeriesCollection

标签 c++ excel visual-c++ com

我已经有了这个代码

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/

相关文章:

c++ - OpenCV:在while循环中填充Mat?

vba - Excel:将工作表导出为 CSV 文件的宏,无需离开当前的 Excel 工作表

excel - 如何使用 Excel 或 Google 表格中的函数脚本将波斯语 (Shamsi) 日期转换为公历 (Miladi) 日期?

c++ - 尝试在 Visual C++ 中使用 CString 时出现语法错误

linux - 将音频从 Windows 输出设备流式传输到 Linux

c++ - 如何在c++中实现变音符号?

c# - 在屏幕外(或隐藏)渲染网络浏览器控件

C++ 错误 : expected identifier before "(" token

c++ - 如何从日期中减去时间

python - "Index Match"Excel 中的功能未在 pandas Merge 中捕获(或者是?)