// Create a new workbook
VARIANT result;
VariantInit(&result);
DISPPARAMS noArgs = { NULL, NULL, 0, 0 };
hr = pXlApp->Invoke(DISPID_APPLICATION_WORKBOOKS, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYGET, &noArgs, &result, NULL, NULL);
if (FAILED(hr)) {
printf("Failed to get Workbooks collection.n");
pXlApp->Release();
CoUninitialize();
return 1;
}
IDispatch* pWorkbooks = result.pdispVal;
hr = pWorkbooks->Invoke(DISPID_WORKBOOKS_ADD, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &noArgs, &result, NULL, NULL);
if (FAILED(hr)) {
printf("Failed to add new workbook.n");
pWorkbooks->Release();
pXlApp->Release();
CoUninitialize();
return 1;
}
IDispatch* pWorkbook = result.pdispVal;
// Get the first worksheet
DISPPARAMS indexArg;
VARIANT index;
index.vt = VT_I4;
index.lVal = 1;
indexArg.rgvarg = &index;
indexArg.cArgs = 1;
indexArg.cNamedArgs = 0;
hr = pWorkbook->Invoke(DISPID_WORKBOOK_SHEETS, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYGET, &indexArg, &result, NULL, NULL);
if (FAILED(hr)) {
printf("Failed to get Sheets collection.n");
pWorkbook->Release();
pWorkbooks->Release();
pXlApp->Release();
CoUninitialize();
return 1;
}
IDispatch* pSheets = result.pdispVal;
hr = pSheets->Invoke(DISPID_SHEETS_ITEM, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYGET, &indexArg, &result, NULL, NULL);
if (FAILED(hr)) {
printf("Failed to get first sheet.n");
pSheets->Release();
pWorkbook->Release();
pWorkbooks->Release();
pXlApp->Release();
CoUninitialize();
return 1;
}
IDispatch* pSheet = result.pdispVal;
// Your code here to manipulate the sheet
pSheet->Release();
pSheets->Release();
pWorkbook->Release();
pWorkbooks->Release();
pXlApp->Release();
CoUninitialize();
return 0;