Форум программистов, компьютерный форум, киберфорум
C/C++
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C/C++ Ищу диск к книге Дональда Бокса Скиньте пожалуйста диск(коды готовые,примеры) к книге Дональда Бокса "сущность технологии сом" или ссылочку) https://www.cyberforum.ru/ c-cpp/ thread1436814.html Регистрация компонента на чистом с++ regsvr32 DllRegisterServer не найдена C/C++
Уже ну очень много постов прочитал с похожими вопросами, но так ответа и не нашел Как обычно Дейл Роджерсон) Его код копирую, пытаюсь зарегистрировать с помощью regsvr32.exe - пишет точка входа DllRegisterServer не найдена. Вроде бы тут ответ https://www.cyberforum.ru/com-ole/thread810410.html. Но не помогает.Пробовал от имена админа запускать командную строку, пробовал через Windows/SySWOW64...
C/C++ Работа с VARIANT https://www.cyberforum.ru/ c-cpp/ thread1425515.html
Добрый день. Есть функция STDMETHODIMP MyClass::InitiateRequest(VARIANT* pVal) { byte mac = { 0x00, 0x8a, 0x0C, 0x98, 0x11, 0x15 }; _variant_t var; var.vt = VT_ARRAY | VT_UI1; SAFEARRAYBOUND rgsabound; rgsabound.cElements = 6; rgsabound.lLbound = 0;
C/C++ Ошибка: "binary '=' no operator found which takes a right-hand operand" https://www.cyberforum.ru/ c-cpp/ thread1423163.html
Добрый день. Пытаюсь функцией вернуть массив byte. Пишу так: STDMETHODIMP CCLASS::function(VARIANT* Value) { byte abc = { 0x34, 0x32, 0x23 }; *Value = abc; return S_OK; } В головном классе ....
C/C++ COM exe server
Возможно ли создать COM exe сервер без использования WINAPI? на данный момент работает так. int main(){ MSG msg; long d = 0; HACCEL hAccelTable = LoadAccelerators(NULL, NULL); HRESULT hr = CoInitialize(NULL); CFactory::StartFactory();
C/C++ LNK2005: _DllCanUnloadNow@0 уже определен в dlldata.obj Продолжаю изучать com. В итоге получаю новую ошибку: error LNK2005: _DllCanUnloadNow@0 уже определен в dlldata.obj error LNK2005: _DllGetClassObject@12 уже определен в dlldata.obj dlldata.c - Файл, созданный MIDL-компилятором. В принципе, понятно, из-за чего возникает ошибка. В main.cpp уже определены две эти функции: STDAPI DllCanUnloadNow() { https://www.cyberforum.ru/ c-cpp/ thread1406042.html
C/C++ Active Directory и C++ https://www.cyberforum.ru/ c-cpp/ thread1403307.html
Товарищи! Проблема в следующем: появилась необходимость работы моей программы, а именно АИС, взаимодействовать с Active Directory:wall:(будь она не ладна). Но я не могу найти внятного примера, или хотя бы подробное описание библиотеки, взаимодействующей с AD. Дайте пинка в нужную сторону, а лучше пример, или ссылочку.
E_NOINTERFACE COM C/C++
Добрый день. Взял пример кода из книги Д. Роджерсона. Его скомпилированный вариант работает на ура, но при попытке повторить сам, получаю следующую ошибку: Невозможно привести COM-объект типа "TestCOMLib.ComponentClass" к интерфейсному типу "TestCOMLib.IX". Операция завершилась со сбоем, поскольку вызов QueryInterface COM-компонента для интерфейса с IID...
C/C++ Ошибка в DLL 800401F9 Доброго времени суток. Изучаю технологию COM, возникли некоторые проблемы. Есть код: IFace.h #include <objbase.h> #include <initguid.h> extern "C" { // {BA84A25E-EFF5-4AB7-9A0E-133551BCA8EC} https://www.cyberforum.ru/ c-cpp/ thread1396194.html C/C++ Общение с Excel через OLE Недавно начал изучать с++. Использую ms vc++ 2010 express. Код такой // 2.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include "windows.h" HRESULT OLEMethodEx(int nType, VARIANT *pvResult, IDispatch *pDisp,LPOLESTR ptName, int cArgs...) https://www.cyberforum.ru/ c-cpp/ thread1381868.html
COM & C++ & MDI C/C++
Всем привет. Совсем недавно стал постигать азы технологии COM на своем "рабочем" языке С++. Благодаря MSDN научился создавать простенькие com серверы и использовать их в приложениях. Но недавно столкнулся с задачей, которую уже долгое время не могу решить. Надеюсь на вашу помощь. Задача следующая. Имеется MDI приложение, в котором есть возможность добавления нового функционала с помощью...
C/C++ Плагин для IE (автоматическое управление браузером) https://www.cyberforum.ru/ c-cpp/ thread1371787.html
мне нужно организовать автоматическое управление браузеров ie (открывать, закрывать вкладки при определённых событиях), вот только незнаю с чего начать, в интернете вычитал что можно это сделать на шарпе, только не могу понять как и примеров не могу найти
271 / 223 / 98
Регистрация: 07.04.2011
Сообщений: 1,374
12.05.2015, 20:11  [ТС] 0

Импорт диапазона из Excel в вариантный массив - C/C++ - Ответ 7604891

12.05.2015, 20:11. Показов 23857. Ответов 34
Метки (Все метки)

Ответ

Вот результат vItem после присваивания ранжа из экселя(в вложениях)
По сути это же двумерный массив,ну или очень странный одномерный,с индексами 1,1 и тд.И значит к его элементам надо обращаться как к двумерному.Что я и попытался сделать в коде,приведенном выше.
C++
1
 hr =    SafeArrayGetElement(vItem.parray, indi, &GetElem[i,0]);
- загуглил часть кода,и переделал под себя.
И мне не понятно почему при указании hr = SafeArrayGetElement(vItem.parray, indi, &GetElem[i,j]); по GetElem возвращаются только значения 1,4,7 и все.Если hr = SafeArrayGetElement(vItem.parray, indi, &GetElem[i,0]); указано так,то возвращаются значения 1,2,3,4,5,6,7,8,9 - то есть нормальные значение,которые забиты в ячейках.hr = SafeArrayGetElement(vItem.parray, indi, &GetElem[i,1]); или 2,или 100 - мусор возвращается.Работает только 0.
Потом я SafeArrayGetElement пытаюсь получить ЗНАЧЕНИЕ ЭЛЕМЕНТА для дальнейшей обработки.Умножить на 10 например и добавить в v.parray
Все проблема в том что я не могу получить значение этого элемента.При SafeArrayGetElement(vItem.parray, indi, &GetElem[i,0]) при пошаговом дебаге получаю по GetElem значение 1,и могу его добавить в SafeArrayPutElement(v.parray, indi, GetElem);.И там тоже добавится значение 1.А вот умножить полученное значение на 10 - не выходит.Вот как это сделать?Именно получить значение элемента, - число,строка и тд
Полный код программы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include "stdafx.h"
#include "windows.h"
#include <clocale>
#include "fstream"
 
#import "C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\OFFICE14\\MSO.DLL" auto_rename no_namespace
#import "C:\\Program Files (x86)\\Common Files\\Microsoft Shared\\VBA\\VBA6\\VBE6EXT.OLB" auto_rename no_namespace
#import "C:\\Program Files (x86)\\Microsoft Office\\Office14\\EXCEL.EXE" auto_rename
 
long int i,j;//переменные циклов
 
 
int main(int argc, char* argv[])    
{
    std::setlocale(LC_ALL,"");
 
        HRESULT hRes = E_FAIL;  
 
            CoInitialize(NULL);
 
            Excel::_ApplicationPtr pApp;
    
        hRes = pApp.CreateInstance("Excel.Application");
    
    if ( FAILED(hRes) )     
    {
        MessageBox(NULL, L"Excel не найден!", L"Ошибка", MB_OK);  
 
        return 1;
    }
 
    Excel::_WorkbookPtr OldBook;//книга 
    OldBook = pApp->Workbooks->Open("C:\\1.xls");//открыть книгу
 
    //отключение событий
    pApp->PutDisplayAlerts(0,FALSE);
    pApp->PutEnableEvents(FALSE);
        
            Excel::_WorksheetPtr OldSheet;//лист исходный
 
                OldSheet = OldBook->Worksheets->GetItem(1);// выбрать первый лист
 
            OldSheet -> Activate();
 
        //10 строк роу 15 столбцов кол
        VARIANT v;
        v.vt = VT_ARRAY | VT_VARIANT;
        SAFEARRAYBOUND sab[2];
        sab[0].lLbound = 1; sab[0].cElements = 3;//строк
        sab[1].lLbound = 1; sab[1].cElements = 3;//столбцов
        //v.parray = SafeArrayCreate(VT_VARIANT, 2, sab);
        v.parray = SafeArrayCreate(VT_VARIANT, 2, sab);
                
        Excel::RangePtr pRange;
         pRange = OldSheet->UsedRange;
         _variant_t vItem;
         VariantInit(&vItem);
 
            vItem = pRange->GetValue();
            long ncols = (vItem.parray)->rgsabound[0].cElements;//3 столбца
            long nrows = (vItem.parray)->rgsabound[1].cElements;//3 строки
 
            VARIANT *GetElem = new VARIANT [nrows*ncols];
            HRESULT hr;
            for(i=0; i<nrows; i++)
            {
                for(j=0; j<ncols; j++)
                {
                    long indi[] = {i+1,j+1};
 
                    hr =    SafeArrayGetElement(vItem.parray, indi, &GetElem[i,0]);
 
                    // VariantChangeType(GetElem,GetElem,0,VT_BSTR);
 
                    SafeArrayPutElement(v.parray, indi, GetElem);
                }
            }       
            pApp->Quit();
        }
Во вложениях книга на которой я проверяю.

Вернуться к обсуждению:
Импорт диапазона из Excel в вариантный массив C/C++
Миниатюры
Импорт диапазона из Excel в вариантный массив  
Вложения
Тип файла: xls 1.xls (25.0 Кб, 4 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.05.2015, 20:11
Готовые ответы и решения:

Как сделать вариантный импорт рисунков?
Разрешите у Вас спросить такую вещь: мне следует сделать следующее. Пользователь выбирает в...

Как лучше записать вариантный массив в текстовой (.txt) файл
Имеется массив A:variant MyArray := VarArrayCreate(, VarDouble); Как писать тоже знаю, примерно...

Чтение данных из диапазона (Excel) в массив (Delphi)
Прочитав пару статей на тему быстрой обработки данных excel в delphi, решил считывать данные...

Excel: создать новый массив по возрастанию элементов выделенного диапазона рабочей таблицы
Разработать подпрограмму создания нового массива по возрастанию элементов выделенного диапазона...

34
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.05.2015, 20:11
Помогаю со студенческими работами здесь

импорт выделенного диапазона
добрый день!у меня есть таблица в Еxcel ee нужно импортировать, но только тот диапазон который был...

Экспорт-импорт данных Excel-Access-Excel
Доброе время суток уважаемые форумчане. Приходит информация в экселевской таблице. Скидываю её в...

Обработка Excel и импорт из Excel в Access
Прошу совета профессионалов. С Excel-м ранее дел не имел. Задание: файлы Excel из одной папки...

Excel -> Access -> Excel, импорт - экспорт
Добрый день! Есть табель учета рабочего времени в таблице Excel, задача - переместить данные со...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru