Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.07.2007, 13:53   #1
MarinaSt
 
Регистрация: 04.07.2007
Сообщений: 3
По умолчанию создание приложения

прошу мне помочь.Необходимо создать на форме компонент с помощью которого осуществляется выбор из какого-нибудь каталога нужной таблицы Excel, и за тем вывод этой таблицы на форму.Подскажите, пожалуйста,какой написать код и какие нужны компоненты, чтобы это сделать
MarinaSt вне форума Ответить с цитированием
Старый 04.07.2007, 14:02   #2
ZhekON
Форумчанин
 
Аватар для ZhekON
 
Регистрация: 24.01.2007
Сообщений: 323
По умолчанию

для выбора таблицы используй компонент TOpenDialog, а далее работай с самим фалйлом OpenDialog.filename

Да, а если тебе нужно прям на форме выбирать из каталога, тогда используй такие компоненты : TFileListBox , TDirectoryListBox , TDriveComboBox.
Всё проще чем вы думаете, нужно только правильно подойти к тому или иному вопросу?

Последний раз редактировалось rpy3uH; 29.07.2008 в 14:59.
ZhekON вне форума Ответить с цитированием
Старый 04.07.2007, 14:24   #3
MarinaSt
 
Регистрация: 04.07.2007
Сообщений: 3
По умолчанию

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

Последний раз редактировалось MarinaSt; 04.07.2007 в 14:28.
MarinaSt вне форума Ответить с цитированием
Старый 04.07.2007, 14:35   #4
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Таблица нигде не будет. Я лично про такие компоненты не слышал (по крайней мере бесплатные).

ActiveX штучка есть (Try&Buy)
http://www.filedudes.com/Excel_Viewe...oad-37072.html

Не триал 99 американских денежек стоит =)


Вот ещё есть, не знаю бесплатное ли
http://www.safe-install.com/programs...iewer-ocx.html
пыщь

Последний раз редактировалось JTG; 04.07.2007 в 14:46.
JTG вне форума Ответить с цитированием
Старый 04.07.2007, 14:40   #5
D-mon
Форумчанин
 
Регистрация: 22.06.2007
Сообщений: 414
По умолчанию

В Dialogs и Win 3.1
Нет невыполнимых задач, всё дело времени...
D-mon вне форума Ответить с цитированием
Старый 04.07.2007, 14:44   #6
MarinaSt
 
Регистрация: 04.07.2007
Сообщений: 3
По умолчанию

а с помощью компонента TBGrid можно предоставить таблицу?
MarinaSt вне форума Ответить с цитированием
Старый 04.07.2007, 14:49   #7
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Ну если найдёшь спецификацию формата excel ... Нет наверно
по второй ссылке тоже только shareware
--
Можно тут что-то поискать, но в основном встречаентся только преобразование dbgrid в excel
http://www.torry.net/quicksearchd.ph...xcel&Title=Yes
--

BINGO!
MarinaSt с тебя пиво, чуть не обгуглился

http://www.scalabium.com/xls/xlslib.htm

тоже демо, с nagом и грузит только первые 50 строк, но уже ближе к теме. Если очень надо, могу дома попробовать поквырять
--

Автор видимо уже не с нами...

Исчо ссылок (вроде бесплатно)
http://axolot.com/components/xlsrwii30_delphi.exe
http://axolot.com/components/XLSMiniDelphi.exe
пыщь

Последний раз редактировалось JTG; 04.07.2007 в 15:14.
JTG вне форума Ответить с цитированием
Старый 04.07.2007, 22:24   #8
Jeni
Форумчанин
 
Регистрация: 31.05.2007
Сообщений: 486
По умолчанию

Цитата:
Сообщение от MarinaSt Посмотреть сообщение
...и за тем вывод этой таблицы на форму.Подскажите, пожалуйста,какой написать код и какие нужны компоненты, чтобы это сделать
Теоретически, можно работать с Excel'ем внутри собственной программы. Для этого можно использовать компонент TOleContainer, расположенный на странице System - бросить на форму, щелкнуть по нему правой кнопкой мыши, в меню выбрать пункт "Insert Object...", а дальше указать ЧТО должно отображаться в контейнере (для Excel'я - Лист Microsoft Excel). Нажать OK. Вот собственно и всё, теперь внутри контейнера будет "запускаться" Excel. Чтобы его вызвать во время работы программы, нужно просто сделать на контейнере двойной щелчок. Правда там есть и свои тонкости, например нужно зарезервировать место для инструментальных панелей Excel'я и другое.

Но вот как им манипулировать из собственной программы - не знаю. Для этого нужно читать разделы книг типа "Автоматизация OLE".
Jeni вне форума Ответить с цитированием
Старый 04.07.2007, 23:51   #9
Sergey_nl
Пользователь
 
Регистрация: 02.07.2007
Сообщений: 23
По умолчанию

Один из вариантов - использовать Excel как com-сервер. Это абсолютно бесплатно и всё уже есть.
Для начала следует импортировать библиотеку типов Excel и подключить её к проекту.
Затем можно будет используя функции библиотеки загружать с помощью Excel-сервера данные примерно следующим образом:

Код:
type
  IxlApplication = Excel_TLB._Application;
  IxlWorkbook = Excel_TLB.Workbook;
  IxlWorksheet = Excel_TLB._Worksheet;
  IxlRange = Excel_TLB.Range;

...
    FIXLSApp: IxlApplication;
    FLCID: LCID;
    fSheet : IxlWorksheet;

    IWorkbook: IxlWorkbook;
    ISheet: IxlWorksheet;
    Rng: IxlRange;
    CellVal: string;
....

//Инициализация 

  FLCID := LOCALE_USER_DEFAULT;
    if not Assigned(FIXLSApp) then begin
      isCreate := NewInstance or
        (not SUCCEEDED( GetActiveObject(Excel_TLB.CLASS_Application_, nil, IU) ) );
      if isCreate then
        begin

          FIXLSApp := CreateComObject(Excel_TLB.CLASS_Application_) as Excel_TLB._Application;
        end
      else
        FIXLSApp := IU as Excel_TLB._Application;
   end;

//Отображение
  wasError:=false; // Ошибки не было
  if Assigned(FIXLSApp) then 
  begin
    try
      FIXLSApp.Visible[FLCID] := true;
    except on E : EOleException do
    begin
....
     end;
  end;

//Загрузка данных
  XLFile:='MyTable.xls';

    try
      FIXLSApp.Interactive[FLCID] := false;
      FIXLSApp.ScreenUpdating[FLCID] := false;
      try
//load file
        IWorkbook := FIXLSApp.Workbooks.Add(XLFile, FLCID);
        fSheet := IWorkbook.Worksheets.Item[1] as IxlWorksheet;
        FIXLSApp.Visible[FLCID]:=true;
      except on E : EOleException do
        begin
.....
        end;
      end;

//Работа с данными

      with MainForm.Table1 do
          fSheet := IWorkbook.Worksheets.Item[1] as IxlWorksheet;
            sRange:='B3';
            Rng:=fSheet.Range[sRange,EmptyParam];
            CellVal:=Trim(Rng.Value);
            if (length(CellVal)<=0) then 
            begin
            //В ячейке ничего нет
            end;
            //Добавляем к таблице новую строку
            Append;
            //Формируем значения полей
            FieldValues['MyField']:= VRange;
......
Возможно, есть более элегантные способы борьбы с экселем.
При смене версии офиса может меняться API, могут измениться функции работы с данными, поэтому лучше отлаживать на той версии офиса, которая будет использоваться.
Проекты для лучших программистов http://www.netlancer.ru
Sergey_nl вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Приложения для смартфонов Иллидан Общие вопросы Delphi 4 02.03.2008 09:12
Делаю сайты, пишу маленькие/большие скрипты. Пишу веб-приложения и приложения под Windows. SkyM@n Фриланс 3 29.12.2007 16:21
Приложения в XP vicvtor Win Api 9 31.08.2007 22:55