Программно скопируйте ячейку из Excel, используя VC ++ - PullRequest
0 голосов
/ 18 января 2009

Без

  • MFC
  • АТЛ

с использованием 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 ]

2 голосов
/ 18 января 2009
0 голосов
/ 13 января 2010

Я ранее писал, что

"Для Excel - COM с использованием C ++

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

Итак, вы создаете функцию ReadCell, например функцию ShowAddedCells.

...