Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Рисование фигур в Excel (MFC)


Автор: akizelokro 27.8.2013, 07:59
Пока пока встретил два подхода (на примере Студии 2010, Excel 2007). предполагаю, что их больше.
Первый - использовать директиву #import, хочу спросить пока про него.

В ходе опеhаций импорта идёт автоматического отключение IFont и IPicture (это ещё ни о чём). Дальше всё нормально (рабочая книга открывается, рабочий лист переименовывается, регион ячеек получен, фигуры создаются, размер и пероначальный стил указать можно) до того момента, пока не идёт обращение к свойствам фигур. Эти обращения обрабатываются через врапперы для следующих структур FillFormat, LineFormat, TextEffextFormat, ColorFormat и прочие. И вот к ним подрубиться не удаётся. Как обойти эту особенность в рамках проекта на MFC при работе с Excel посредством импорта? И возможно ли это сделать? Не является ли это последствием автоматического отключения IFont и IPicture?



Автор: GremlinProg 27.8.2013, 08:26

M
GremlinProg
Тема перемещена из раздела C/C++: Системное программирование и WinAPI

Автор: akizelokro 27.8.2013, 13:24
Ну, вроде получил косвенные подтверждения, что там пашет всё, как и должно пахать.
Подключил вообще уж чуть ли не API вызовы, описанные на http://stackoverflow.com/questions/15834612/how-to-read-write-excel-checkbox-status-in-c


Код

ShapePtr pShape1(pShape);
pShape1->PutShapeStyle(Office::msoShapeStylePreset25);

IDispatch *pXlTextEffectFormat;
{
    VARIANT result;
    VariantInit(&result);
    AutoWrap(DISPATCH_PROPERTYGET, &result, pShape, L"TextEffect", 0);
    pXlTextEffectFormat = result.pdispVal;
}


При таком обращении, смешанном с импортом, всё назначается, получается и берётся. Все свойства становятся доступными и работоспособными.
Но хотелось бы не мешать два подхода и довести до ума более удобный.



Так что задача остаётся прежней. Судя по всему, автоматическое исключение интерфейсов IFont и IPicture делают неработоспособными обращения такого плана

Код

ShapePtr pShape ...

TextEffectFormatPtr trfpr = pShape->TextEffext;
tfpr->PutText(...)


То есть, все структуры, которые могут зависеть от IFont и IPicture,становятся недоступными(?!).
Как обойти автоматическое отключение IFont и IPicture при импорте функционала из Эксела (и Оффиса) и попутно сделать работоспособными структуры ColorFormat, LineFormat и подобные?

Автор: akizelokro 29.8.2013, 13:57
Запретил автоматическое исключение IFont и IPicture, ничего в поведении не изменилось.
Значит, причина не в этом.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)