我使用C++ 的方式调用excel的com接口, 在新增表格的时候会提示访问冲突,这个为什么呢 ?
#include "stdafx.h"
#include <atlcomcli.h>
int _tmain(int argc, _TCHAR* argv[])
{
CoInitialize(NULL);
_ApplicationPtr pExcelApp;
HRESULT hr = pExcelApp.CreateInstance(__uuidof(Excel::Application));
if(SUCCEEDED(hr))
{
pExcelApp->put_Visible(0, VARIANT_FALSE);
_WorkbookPtr pWorkbook = pExcelApp->Workbooks->Open(_T("C:\\Users\\pc\\Desktop\\2.xlsx"));
if(pWorkbook)
{
SheetsPtr sheets = pWorkbook->GetSheets();
_WorksheetPtr wSheet = (_WorksheetPtr)sheets->GetItem(1);
ChartObjectsPtr chartObjects = (ChartObjectsPtr)wSheet->ChartObjects(vtMissing);
ChartObjectPtr myChart = chartObjects->Add(100, 200, 400, 300);
_Chart* chart = myChart->GetChart();
chart->PutChartType(Excel::XlChartType::xlLine); //代码运行到此处会提示访问冲突
pWorkbook->Close();
pExcelApp->Quit();
}
}
::CoUninitialize();
return 0;
}
检查一下指针哇~
不知道你这个问题是否已经解决, 如果还没有解决的话: //关联所有工作列表
m_sheets.AttachDispatch(m_book.get_Worksheets(),true);
//打开工作列表
m_sheet = m_sheet.get_Item(COleVariant("sheet1"));