Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> COM-сервер TExcelWorksheet из C++Builder, Доступ к ячейкам через TExcelWorksheet 
:(
    Опции темы
Гость_sam
Дата 10.10.2003, 16:17 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Помогите разобраться с Excel'евскими COM-серверами TExcelApplication, TExcelWorkbook, TExcelWorkSheet в C++ Builder.
Есть проблема:
не могу получить доступ к ячейкам листа (прочитать, записать) через Range, Cell и т.п.
PS: решения через OleProperty не предлагать, хочется всё сделать через TExcel*.
Пример моего кода (работающей части):
{...
// ------------------ запускаем сервер Excel ---------------------------------
bool ExcelWasClosed = false; //флаг запущенного Excel
_ApplicationDisp app; //диспетчер-интерфейс для работы с объектом Application
TNoParam qq; //отсутствие параметра (EmptyParam) в вызовах некоторых функций
try
{ //пытаемся присоединиться к запущенному Excel
HRESULT result=app.BindToActive(CLSID_ExcelApplication);
if (!SUCCEEDED(result)) //в системе нет запущенного Excel
{
ExcelWasClosed = true; //Excel всё-таки не запущен или даже не установлен
result=app.Bind(CLSID_ExcelApplication); //запускаем Excel
}
if (SUCCEEDED(result)) //проверка результата запуска
{
//--------------действия при установленном и запущенном Excel на компьютере------
//задаём имя файла для сохранения
MainFrm->MainSave->Title = "Экспорт данных в Excel ...";
MainFrm->MainSave->Filter = "Файлы MS Excel(*.xls)|*.xls|Все файлы (*.*)|*.*";
MainFrm->MainSave->DefaultExt = "xls";
if(MainFrm->MainSave->Execute())
{
if (ExcelWasClosed) app.Visible = true; //делаем видимым приложение, если это нужно

//работа с новой книгой (создаётся новый файл с книгой)
//число листов в новой книге
ExcelApplication1->SheetsInNewWorkbook[LOCALE_USER_DEFAULT] = 1;
//создали новую книгу
ExcelApplication1->Workbooks->Add();
//подключили компонент с формы к созданной книге
MyWorkbook->ConnectTo(ExcelApplication1->Get_Workbooks()->get_Item(1));
//сохранение в файл
MyWorkbook->SaveAs(MainFrm->MainSave->FileName,qq,qq,qq,qq,qq,xlNoChange,qq,qq,qq,qq,LOCALE_USER_DEFAULT);

//работа с листами в книге
//соединяемся с активным листом
MyWorksheet->ConnectTo(ExcelApplication1->ActiveSheet);
AnsiString qs = "abcdefgh";
int len=qs.Length(); //число символов в имени листа
//даём имя листу (довольно ракообразно) !!!!
MyWorksheet->Name = qs.WideChar(MyWorksheet->Name, len);

//работа с ячейками на листе
//вот здесь-то ничего и не получается !!!!

//закрытие файла с сохранением без переспрашивания
MyWorkbook->Close(true,qq,qq,LOCALE_USER_DEFAULT);
}
else
{
ShowMessage("Export in Excel: Файл " + MainFrm->MainSave->FileName + " не удаётся создать.");
}
if (ExcelWasClosed)
app.Quit(); //завершение работы с Excel, если он не был открыт до нас
}
else
{
ShowMessage("Не удалось запустить Excel. Возможно, он у Вас не установлен.");
return;
}
}
catch (Exception& E)
{
ShowMessage("Ошибка при работе с Excel.");
}
}
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0468 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.