![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| BucheRRR73 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 23.10.2006 Репутация: нет Всего: нет |
В общем, мне необходимо экспортировать в книгу Excel большой объем данных.
По всем правилам открываю excel: using namespace Excel; CLSID clsid; CLSIDFromProgID(L"Excel.Application", &clsid); _ApplicationPtr pApp; pApp.CreateInstance (clsid,NULL); pApp ->PutVisible (0,VARIANT_TRUE); _WorkbookPtr pBook = pApp->GetWorkbooks()->Add(); _WorksheetPtr pSheet = pBook->Worksheets->GetItem(_variant_t((long)1)); Все ок, можно занести данные в ячейку так: pSheet->Range["B1"]->Value2 = "Произвольный текст"; но имя ячейки указывается в текстовом формате - "B1", с этим в цикле много данных не положишь! А мне необходимо получить ячейку например через: pSheet->Cells[2,1]->Value2 = "Произвольный текст"; чтобы можно было заносить данные например из массива mass через цикл... for(i = 1; i<10; i++) for(j = 1; j<10; j++) pSheet->Cells[i,j]->Value2 = mass[i,j]; НО! Cells[i,j] просто НЕ работает!!! Как надо с ним работать, как правильно обращаться? |
|||
|
||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 4 Всего: 67 |
Где пишешь? Если в C++B то может есть резон поюзать OLE Automation и тип TVariant?
-------------------- СУВ, Partizan. |
|||
|
||||
| BucheRRR73 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 23.10.2006 Репутация: нет Всего: нет |
Да, пишу в Си, а можно поподробнее о "OLE Automation и тип TVariant?"
|
|||
|
||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 4 Всего: 67 |
Я о среде разработки говорю, а не о языке... если пишешь в Borland C++ Builder, то там есть такой волшебный тип, который называется TVariant....с его помощью в ехселе можно много чего сотворить...в том числе обратиться к ячейке...
з.ы.Я тут сча перечитал твоё сообщение... Чтото синтаксис обращения к ячейке двумерного массива у тебя неверный.... Попробуй так...
-------------------- СУВ, Partizan. |
|||
|
||||
| BucheRRR73 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 23.10.2006 Репутация: нет Всего: нет |
Это-то я знаю, что в борланде такой тип есть, а я пишу в Visual studio 6 (((
Такие дела, а там, насколько я знаю есть не волшебный тип VARIANT, который чудес не делает... На счет двумерного массива, просто как пример привел, не обращай внимание, суть жзе понятна)). Ну так что, не подскажешь, как можно еще занести двумерный массив в таблицу? Очень нужно.. Ну как-то же люди заносят... |
|||
|
||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 4 Всего: 67 |
так как более рациональными методами в данном вопросе не располагаю... предлагаю тупое решение "прямо в лоб"
формировать строку типа "А1" , "A2" .... и т.д. просто увеличением в цикле аски кода на 1....суть ясна? -------------------- СУВ, Partizan. |
|||
|
||||
| BucheRRR73 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 23.10.2006 Репутация: нет Всего: нет |
Тут та все ясно! Лень матушка... Неохота!)) Лано, пойду тогда тупо работать со строками...)) Если у кого есть какие идеи по этому поводу, прошу, высказывайтесь не стесняйтесь... |
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
тип variant не просто так называется. он может содержать в себе любой тип данных. в т. ч. массив. и один волшебным вызовом ф-ции ты можешь заполнить любой прямоугольник в таблице. в интерфейсе Range есть волшебное поле Value2. в него и нужно засунуть variant array. скорость просто несравнимая
зы. для формул аналогичное поле Formula -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
| BucheRRR73 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 23.10.2006 Репутация: нет Всего: нет |
нука,нука, можно поподробнее... Конкретный простейший пример. Допустим нам надо заполнить ячейки данных "A3:B5" массивом 2*3 mass. Мы должны сначала присвоить переменной типа VARIANT (var) переменнную mass, а потом сделать pSheet->Range["B1", var]; Я просто не понял как внести значения данной переменной типа VARIANT. |
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
ниже результаты моих попыток осознать automation на с++. что-то взято из msdn, что-то из древних познаний аж из самого delphi 6...короче говоря, чем смогу тем, помогу:
кстати, что такое BSTR - я не знаю...предполагаю, что какие-то специальные строки, но не факт...короче говоря может быть можно просто V_BSTR (pvData) = str, а может и низя - эт не ко мне. насчет удаления этих строк тож. не знаю удаляет ли safearray свои элементы, пологаясь на их тип... зы. вот нормальный, рабочий вариант на c#. в нем все почти также, как здесь Это сообщение отредактировал(а) archimed7592 - 11.11.2006, 22:32 -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
| BucheRRR73 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 23.10.2006 Репутация: нет Всего: нет |
||||
|
||||
| BucheRRR73 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 23.10.2006 Репутация: нет Всего: нет |
Мдяяя, сделал вроде все как сказали (archimed7592), а что-то не работает... Не заносит он туды значения...
Надо что-то с Cells придумать, не зря же данное поле есть в переменной листа книги... Вот пока мои результаты... Присоединённый файл ( Кол-во скачиваний: 4 )
poka.zip 1,94 Kb |
|||
|
||||
| CLIPSA |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 6.10.2006 Репутация: нет Всего: 2 |
||||
|
||||
| Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 4 Всего: 67 |
да там всё тоже без числовых индексов....
-------------------- СУВ, Partizan. |
|||
|
||||
| archimed7592 |
|
||||||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
таки удалось прикрутить мне excel к vc8, спасибо CLIPSA, натолкнула на использование #import, правда долго парился над clsid'ами - у меня к сожалению нету ms office 2000, а в 2003 таких файлов нет
Добавлено @ 15:12 зы. сейчас посмотрел poka.zip, там office.h:
а у меня (libid честно выдирал из соседнего проекта на c#)
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
||||||
|
|||||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |