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();

... テーブルにデータを入力するコードの一部を表します。一度だけ実行すると、1 つのワークシートと 1 つのプロットを含む新しいワークブックが作成されます。しかし、 for ループの中に入れたい場合、複数のExcelワークブックが開き、すべてペアシート/プロットがあります。しかし、私はそれらすべてを 1 つのワークブックに入れたいと思っています。ところで、次の行の後に 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に指示し(ワークブックは複数形であり、そのAddメソッドは新しいワークブックを作成すると想定するのが妥当です)、そこで新しいシートを作成します。

この声明を考えると

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

現在のブックに新しいシートを作成し、そのシートへのポインタを返すXL->ActiveWorkbook->Sheetsメソッドを持つaもあるはずです。Add()そのため、代わりに、現在アクティブなブックに新しいシートを作成XL->Workbooks->Addしようとします。XL->ActiveWorkbook->Sheets->Add()

この回答のドキュメントを読んでいないことに注意してください。これは、メソッドの名前付けと、Microsoft OOPスキームが(数年前に)機能していた方法を知っていることからの私の仮定にすぎません。

于 2012-06-12T11:14:23.853 に答える