C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Excel & C++ Builder, Excel & C++ Builder
Azret
Отправлено: 11.03.2004, 07:46


Не зарегистрирован







Люди добрые, помогите, я уже замучился!

У меня три вопроса:

1. Что лучше использовать для связи с Excel'ом:
- Компоненты TExcel*;
- Через OLE объекты (GetOleObject и др.);

2. Как профессиональнее работать с Excel'ом:
- Как правильно отследить установлен ли Excel на данном компьютере;
- Какие исключения возникают при работе с Excel и в каких случаях;

3. При работе с компонентами TExcel* у меня не получается сохранить
книгу (Save — работает, а SaveAs — нет!), например:

(My Component):
TSaveDialog *ReportSave;

//Компоненты из вкладки Office2k:
TExcelApplication *ExcelApp;
TExcelWorkbook *MyWorkbook;
TExcelWorksheet *MyWorkSheet;

(Source)
..........................
..........................
if (ReportSave->Execute())
{
ExcelApp->Connect();
ExcelApp->set_SheetsInNewWorkbook(LOCALE_USER_DEFAULT, 1);
ExcelApp->Workbooks->Add(EmptyParam, LOCALE_USER_DEFAULT);
MyWorkbook->ConnectTo(ExcelApp->ActiveWorkbook);
MyWorksheet->ConnectTo(ExcelApp->ActiveSheet);

/**********************************************/

AnsiString sName = "Отчётик";
wchar_t *wcName = new wchar_t;
sName.WideChar(wcName, sName.Length());
MyWorksheet->set_Name(wcName);
delete wcName;

/**********************************************/

MyWorkbook->SaveAs(Variant(ReportSave->FileName),
EmptyParam,
EmptyParam,
EmptyParam,
EmptyParam,
EmptyParam,
xlNoChange,
EmptyParam,
EmptyParam,
EmptyParam,
EmptyParam,
LOCALE_USER_DEFAULT);
/**********************************************/

MyWorksheet->Free();

MyWorkbook->Close(Variant(false), EmptyParam, EmptyParam, LOCALE_USER_DEFAULT);
MyWorkbook->Disconnect();
ExcelApp->Quit();
ExcelApp->Disconnect();
}
..........................
..........................
if (Здесь вулева переменная(если отчёт создан))
ShellExecute(Application->Handle, "open", ReportSave->FileName.c_str(), NULL, NULL, SW_SHOWNORMAL);

Компилятор необнаруживает никаких ошибок, однако строка "MyWorkbook->SaveAs..."
невыполняет надлежащих действий.

и правильно ли выполняется присвоение нового имени активному листу?
Само присвоение происходит, но потом появляются какие-то ошибки при закрытии главной формы проекта.
Причём, если я убираю эти строки никаких ошибок не возникает.


Буду благодарен за любые предложения! smile.gif
Guest
Отправлено: 14.03.2007, 12:20


Не зарегистрирован







Подключайся к Экселю как к базе,по крайней мере мне так было проще, правда я только что это проделал если что моё мыло Arius.85@mail.ru, а на другие вопросы я пока ответить не могу

Вернуться в Вопросы программирования в C++Builder