Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как лучше работать с Excel

1.0K
30 сентября 2002 года
Gold
7 / / 20.06.2000
Пишу прогу, которая должна обрабатывать БД через Excel. Многие утверждают, что для связи с мс офисом лучше использовать либо TLB, либо работать через Variant (CreateObject(), OlePropertyGet() и т.п.). Однако, в 5-ке и 6-ке есть компоненты для связи с с мс офисом, правда в справке они совершенно не описаны.
Поделитесь опытом, что все-таки лучше использовать и где про это более или менее неплохо написано.
Аноним
Я нахожусь в такой-же ситуации.
Тоже только начинаю рабтать с Екселем,
и вот мои впечатления

Обычно Бильдер дает прекрасную помощьпо
своим компонентам, по которой можно легко
разобраться, как работать с ними. Но вот
по TExcellApplication - никакой!!!
Может, правда, она есть в шестом, но в
пятом ее нет. Может и нужно работать через этот класс, но уж больно он пугает -
если посмотреть его в класс эксплорере -
что-то жутко огромное. Моя машина еле тянет,
когда приходится компиллировать с этим классом.

Правда, есть другой способ, хотя говорят он
хуже - работа через Variant.

Обсуждение всех этих вопросов можете
найти в приведенных ниже ссылках

http//www.delphikingdom.com/helloworld/excel.htm

http//www.delphikingdom.com/helloworld/excel2.htm

http//www.delphikingdom.com/helloworld/excel3.htm

http//www.afalinasoft.com/rus/tips/index.html

http//src.fitkursk.ru/articles/art0000028_1.asp

http//forum.codenet.ru/viewtopic.php?topic=294&forum=3

А вот вам очень простой пример кода,
который запускает Ексель и показывает его
на экране. Только что проверил - все работает.

#include <utilcls.h>

void __fastcall TForm1Button1Click(TObject *Sender)
{
Variant app, ws;
app = CreateOleObject(&quot;Excel.Application&quot;);
app.OlePropertySet(&quot;Visible&quot;, true);
app.OlePropertyGet(&quot;Workbooks&quot;).OleProcedure(&quot;Add&quot;);
ws = app.OlePropertyGet(&quot;Worksheets&quot;).OlePropertyGet(&quot;Item&quot;,1);
}
//---------------------------------------------------------------------------

Кроме того, могу выслать на мыло
немного текстовой информации, скаченной мной
в инете. Но советом врядли помогу - сам только что начинаю разбираться.

Галин А.М.
317
01 октября 2002 года
Relax
573 / / 20.09.2000
в 6-м Билдере тоже ничего в хелпе нету , а жаль... мне, например, очень хочется научиться отчеты делать посредством средств Excel, но в Билдере... кое-что уже есть - спасибо Joker-у ttp//www.delphikingdom.com/helloworld/index.htm), но хотелось бы еще кое-чот поиметь... пришлите, плиз... и по-моему эта тема станет следующим бест-селлером (вернее бест-гивером) вслед за архивом по работе с COM-портом
746
01 октября 2002 года
Galin
9 / / 20.01.2000
Цитата:

и по-моему эта тема станет следующим бест-селлером (вернее бест-гивером) вслед за архивом по работе с COM-портом



Выслал Вам небольшой архив про
работу с Екселем.
Правда там не так много информации, как
в архиве про порты - только начинаю работать!

Насчет бестселлера - не думаю!
В свое время, когда я начанал работать с портами,
потратил кучу времени на поиск информации,
и было очень трудно найти что-нибудь хорошее.
С Екселем - тут же нашел очень хорошее описание.


Кроме того, вряд-ли кто-то
станет работать с Екселем с помощью
Ассемблера, а вот с портами - пожалуйста
(см статью чуть пониже)
И не сразу становится понятным, что
ассемблер - это гибель!

Кстати если Вы продолжаете интересоваться портами, то только что я прочел статейку и вот небольшой кусок из нее
(если надо - вышлю)

Просто в этом случае при кодировании вам придется спуститься до уровня ассемблера. Автор следующего кода Arthur Hoornweg (hoornweg@hannover.sgh-net.de)


--------------------------------------------------------------------------------
function getport(pword)byte; stdcall;
begin
asm
push edx
push eax
mov dx,p
in al,dx
mov @result,al
pop eax
pop edx
end;
end;



Procedure Setport(pword;bbyte);Stdcall;
begin
asm
push edx
push eax


mov dx,p
mov al,b
out dx,al


pop eax
pop edx
end;
end;

Fran&amp;ccedil;ois Piette также предлагает свое решение прямого доступа к портам I/O на страничке


Но все вышесказанное под Windows NT работать не будет. NT более &quot;прочная&quot; операционная система

1.0K
01 октября 2002 года
Gold
7 / / 20.06.2000
Сейчас читаю Архангельского, который предлагает пользоваться офисными компонентами в билдере.Однако, информации более или менее достаточной по ним найти не могу. В противоположность этому, пользуясь Variant, можно почитать описания объектов в микрософтовском хелповнике. Однако там тоже определенные проблемы. Например, не могу понять, как подсчитать все книги, которые были открыты до запуска приложения. Свойство Count, почему-то выдает 0.
А за ссылочку спасибо, в своих поисках я до нее не доходил
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог