COleSafeArrayを使って文字列データをエクセルに出力するにはC++でどのように記述すればよいですか?
COleSafeArrayを使用してExcelに文字列を書き込むには、次の手順に従う必要があります。
必要なヘッダーファイルをインクルードする
#include #include
文字列値を格納するために`COleVariant`オブジェクトを作成:
CString strValue = "Hello, World!"; COleVariant var(strValue);
COleVariantオブジェクトをCOleSafeArrayオブジェクトに変換します。
COleSafeArray sa;
sa.CreateOneDim(VT_VARIANT, 1);
LONG index[] = {0};
sa.PutElement(index, &var);
Excel アプリケーションを開いて `IDispatch` インターフェースポインタを取得します。
_Application app;
app.CreateDispatch("Excel.Application");
ワークブックを開くか新規作成する:
Workbooks workbooks = app.GetWorkbooks(); _Workbook workbook; workbooks.Open(L"C:\\path\\to\\Workbook.xlsx", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); // 如果要创建新的工作簿,请使用下面的代码: // _Workbook workbook = workbooks.Add();
ワークシートオブジェクトの取得:
Sheets sheets = workbook.GetSheets(); _Worksheet sheet; sheet = sheets.GetItem(COleVariant((short)(1)));
セルに文字列値を入力する:
Range range; range = sheet.GetCells(); range = range.GetItem(COleVariant((long)(1)), COleVariant((long)(1))); range.SetValue(COleVariant(sa));
ブックを保存して閉じる:
workbook.Save(); workbook.Close();
9. Excel アプリケーションを終了します。
app.Quit();
完全なサンプルコードは以下のとおりです。
#include
#include
int main() {
CoInitialize(NULL);
CString strValue = "Hello, World!";
COleVariant var(strValue);
COleSafeArray sa;
sa.CreateOneDim(VT_VARIANT, 1);
LONG index[] = {0};
sa.PutElement(index, &var);
_Application app;
app.CreateDispatch("Excel.Application");
Workbooks workbooks = app.GetWorkbooks();
_Workbook workbook;
workbooks.Open(L"C:\\path\\to\\Workbook.xlsx", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL);
//_Workbook workbook = workbooks.Add();
Sheets sheets = workbook.GetSheets();
_Worksheet sheet;
sheet = sheets.GetItem(COleVariant((short)(1)));
Range range;
range = sheet.GetCells();
range = range.GetItem(COleVariant((long)(1)), COleVariant((long)(1)));
range.SetValue(COleVariant(sa));
workbook.Save();
workbook.Close();
app.Quit();
CoUninitialize();
return 0;
}
「ole32.lib」と「afxdisp.lib」ライブラリへのリンクが確立済みで、ファイルパスは実際の Excel ブックパスに置き換えていることを確認してください。