Работа с диаграмами в MS Excel
От: Cory Россия  
Дата: 08.01.02 13:06
Оценка:
Здравствуйте!
Имеется проблема: у меня возникла необходимость генерировать некоторые excel-файлы и в них диаграмы. Пишу я на VC++ 6.0. Имеются ли готовые средства для VС++, которые могут упростить работу с Excel или придется копаться в его интерфейсах самому? Если таких средств нет, то имеет ли кто опыт в работах такого рода? Если кто-то имеет, не мог ли уважаемый джин прислать свою контактную информацию (мыло или аську) чтобы я мог его (уважаемого джина) потерзать более конкретныи вопросами? Бо очень надо.
Заранее благодарен,
пиво за мной,
Чернов Евгений.
Re: Работа с диаграмами в MS Excel
От: retalik www.airbandits.com/
Дата: 09.01.02 12:57
Оценка:
Здравствуйте Cory, Вы писали:

C>Здравствуйте!

C>Имеется проблема: у меня возникла необходимость генерировать некоторые excel-файлы и в них диаграмы. Пишу я на VC++ 6.0. Имеются ли готовые средства для VС++, которые могут упростить работу с Excel или придется копаться в его интерфейсах самому? Если таких средств нет, то имеет ли кто опыт в работах такого рода? Если кто-то имеет, не мог ли уважаемый джин прислать свою контактную информацию (мыло или аську) чтобы я мог его (уважаемого джина) потерзать более конкретныи вопросами? Бо очень надо.

Неясно, читал ли не менее уважаемый джинн:
1) статьи IT про MS Office в MFC и про директиву #import (здесь же на сайте);
2) MSDN на предмет MS Office 2000/Visual Basic Programmer's Guide.
Если да, то какие вопросы есть конкретно?
Успехов,
Виталий.
Re[2]: Работа с диаграмами в MS Excel
От: Cory Россия  
Дата: 11.01.02 13:08
Оценка:
Здравствуйте retalik, Вы писали:

R>Здравствуйте Cory, Вы писали:


C>>Здравствуйте!

C>>Имеется проблема: у меня возникла необходимость генерировать некоторые excel-файлы и в них диаграмы. Пишу я на VC++ 6.0. Имеются ли готовые средства для VС++, которые могут упростить работу с Excel или придется копаться в его интерфейсах самому? Если таких средств нет, то имеет ли кто опыт в работах такого рода? Если кто-то имеет, не мог ли уважаемый джин прислать свою контактную информацию (мыло или аську) чтобы я мог его (уважаемого джина) потерзать более конкретныи вопросами? Бо очень надо.

R>Неясно, читал ли не менее уважаемый джинн:

R>1) статьи IT про MS Office в MFC и про директиву #import (здесь же на сайте);
R>2) MSDN на предмет MS Office 2000/Visual Basic Programmer's Guide.
R>Если да, то какие вопросы есть конкретно?

Уже читал, спасибо за подсказку. Проблему однако это не решило.
Директива #import и все прочее, насколько я понял, в состоянии помочь только в случае с небольшими и несложными объектами. MS Excel для нее сложненький, видимо, потому что в одном только .tlh он мне дает 118 ошибок. А в гиде к ВБ (у меня в MSDN, по крайней мере) информация довольно скудная и все равно остается непонятным как эти интерфейсы с минимальными потерями использовать в VC. Я не хочу ручками прописывать GUIDы и описания интерфейсов . От тако та. Если я в чем-то неправ — вразумите пожалуйста.
Re[3]: Работа с диаграмами в MS Excel
От: retalik www.airbandits.com/
Дата: 14.01.02 07:50
Оценка:
Здравствуйте Cory, Вы писали:

C>Уже читал, спасибо за подсказку. Проблему однако это не решило.

C>Директива #import и все прочее, насколько я понял, в состоянии помочь только в случае с небольшими и несложными объектами. MS Excel для нее сложненький, видимо, потому что в одном только .tlh он мне дает 118 ошибок.
Да нет, #import помогает в львиной доле случаев. (мы все еще о VC говорим? )
Просто при включении надо разрешать конфликты имен.
Вот, я кому-то уже делал компилируемый пример (только файлики .dll и .olb надо в текущий каталог программы перетащить):
#import "mso9.dll" no_namespace rename("DocumentProperties", "DocumentPropertiesXL")   
#import "vbe6ext.olb" no_namespace   
#import "excel9.olb" rename("DialogBox", "DialogBoxXL") rename("RGB", "RBGXL") rename("DocumentProperties", "DocumentPropertiesXL") no_dual_interfaces

#pragma warning (disable:4192)

void main()
{
    CoInitialize(NULL); 
    using namespace Excel;
    _ApplicationPtr pXL;
    try 
    {
        pXL.CreateInstance(L"Excel.Application");
        pXL->Visible = VARIANT_TRUE;
        WorkbooksPtr pBooks = pXL->Workbooks;
        _WorkbookPtr pBook  = pBooks->Add((long)xlWorksheet);
        _WorksheetPtr pSheet = pXL->ActiveSheet;
        pSheet->Range["A1:A10"]->Value = 100L;
        pSheet->Range["A11"]->Value = "=SUM(A1:A10)";
    }
    catch(_com_error &e)
    {
        MessageBox(0, e.Source()+" "+e.Description()+" "+e.ErrorMessage(), 
            "Error!", MB_OK);
    }
    CoUninitialize(); 
}

C>А в гиде к ВБ (у меня в MSDN, по крайней мере) информация довольно скудная и все равно остается непонятным как эти интерфейсы с минимальными потерями использовать в VC. Я не хочу ручками прописывать GUIDы и описания интерфейсов . От тако та. Если я в чем-то неправ — вразумите пожалуйста.

Тогда надо читать MSDN->Office developer documentation->Office 2000 documentation->Microsoft Office 2000 Language Reference.
Причем IT дал универсальный совет: чтобы узнать, как что-то сделать программно, надо включить запись макросов и сделать это ручками. А потом макрос в программу на C++ перевести — как два байта переслать
Успехов,
Виталий.
Re[4]: Работа с диаграмами в MS Excel
От: Cory Россия  
Дата: 14.01.02 08:07
Оценка:
Здравствуйте retalik,
Огромное спасибо Вам за помощь и за код. С ним все заработало. Теперь остается видимо только теорию подчитать .
Re[5]: Работа с диаграмами в MS Excel
От: samsung Россия  
Дата: 16.02.02 10:28
Оценка:
У меня выдаёт ошибку
_________________________________
|Colnitialize has not been called |
|_________________________________|

что это значит и как с этим бороться
Re[6]: Работа с диаграмами в MS Excel
От: IT Россия linq2db.com
Дата: 16.02.02 17:04
Оценка:
Здравствуйте samsung, Вы писали:

S>У меня выдаёт ошибку

S>|Colnitialize has not been called |

В начале программы сделай вызов CoInitialize(NULL), в конце не забудь CoUninitialize().
Если нам не помогут, то мы тоже никого не пощадим.
Re: Работа с диаграмами в MS Excel
От: frogge Россия  
Дата: 17.02.02 08:20
Оценка:
В MSDN не рекомендуется использовать #import при работе с Office, ввиду того, что его объектная модель слишком сложна.
Вопрос: может, кто-нибудь знает, к каким реальным неприятностям это может привести?
У меня из неприятностей — остающийся в памяти сервер (если, конечно, не вызывать Quit()).
Re[2]: Работа с диаграмами в MS Excel
От: IT Россия linq2db.com
Дата: 17.02.02 18:38
Оценка:
Здравствуйте frogge, Вы писали:

F>В MSDN не рекомендуется использовать #import при работе с Office, ввиду того, что его объектная модель слишком сложна.


Напиши VB- или J- Script и вызывай его из C++

F>Вопрос: может, кто-нибудь знает, к каким реальным неприятностям это может привести?


Это просто сложно, вот и всё. Например, иногда приходится объявлять промежуточные переменные, т.к. метод возвращает IDispatch, который нужно привести к ISomeOfficeObjectPtr. Скриптовые языки это делают автоматически, на C++ приходится копать глубже.

F>У меня из неприятностей — остающийся в памяти сервер (если, конечно, не вызывать Quit()).


Это не неприятность, это by design
Если нам не помогут, то мы тоже никого не пощадим.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.