使用VC ++以编程方式从Excel复制单元格

时间:2009-01-18 20:02:16

标签: c++ visual-studio-2008 excel com

没有

  • MFC
  • ATL

使用 COM 纯C ++ ,到目前为止采取的措施:

//steps above omitted

_ApplicationPtr application(__uuidof(Excel::Application));

//omitted

const BSTR wcharFileName = SysAllocString(L"...");

application->Workbooks->Open(wcharFileName);

application->put_Visible(10, true);

问题:

  • 如何将单元格(例如A4,B4和C4)复制到数组中?

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

我之前发布了

“对于Excel - 使用C ++的COM

http://shaktisaran.tech.officelive.com/ExcelCOM.aspx

它还有Windows编程教程。“

我已删除该帖子,因为它不会轻易帮助。

我在网站上提供了与示例相关的更多信息,

在ExcelProcessor.cpp

ReadRange函数读取一系列Excel单元格,但您需要读取数据单元格。

ShowAddedCells函数写入您可以使用的Excel单元格。

在ShowAddedCells函数中,

//Comment the following
/*
DISPID dispidPUT = DISPID_PROPERTYPUT;

DISPPARAMS dparams = {vDblVal, &dispidPUT, 1, 1};

EXCEPINFO excepinfo;

hr = pXlCell->Invoke(dispID,
    IID_NULL,
    LOCALE_SYSTEM_DEFAULT,
    DISPATCH_PROPERTYPUT,
    &dparams,
    NULL,
    &excepinfo,
    NULL);
*/

//Add the following
DISPPARAMS dparams = {NULL, NULL, 0, 0};

EXCEPINFO excepinfo;

VARIANT vResult;
VariantInit(&vResult);

hr = pXlCell->Invoke(dispID,
    IID_NULL,
    LOCALE_SYSTEM_DEFAULT,
    DISPATCH_PROPERTYGET,
    &dparams,
    &vResult,
    &excepinfo,
    NULL);

//You get the cell value in vResult

所以你创建一个像ShowAddedCells函数一样的ReadCell函数。