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..."
невыполняет надлежащих действий.
и правильно ли выполняется присвоение нового имени активному листу?
Само присвоение происходит, но потом появляются какие-то ошибки при закрытии главной формы проекта.
Причём, если я убираю эти строки никаких ошибок не возникает.
Буду благодарен за любые предложения! |
|
Guest |
Отправлено: 14.03.2007, 12:20 |
|
Не зарегистрирован
|
Подключайся к Экселю как к базе,по крайней мере мне так было проще, правда я только что это проделал если что моё мыло Arius.85@mail.ru, а на другие вопросы я пока ответить не могу |
|
|