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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.03.2008, 10:55   #1
Ромыч
 
Регистрация: 05.03.2008
Сообщений: 7
Вопрос загрузка таблиц excel в delphi

Подскажите пожалуйста как загрузить таблицу excel в delphi и отобразить ее в dbgrid'e, для дальнейшей работы с ней. Например, чтобы можно было выполнять в ней поиск.
Век живи - век учись
Ромыч вне форума Ответить с цитированием
Старый 06.03.2008, 12:20   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Через ADO+соответствующий провайдер ODBC, и работать с ней как с БД
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.03.2008, 12:37   #3
Ромыч
 
Регистрация: 05.03.2008
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Через ADO+соответствующий провайдер ODBC, и работать с ней как с БД
Stilet я пробовал через ADO, но у меня не получилось. Может быть конечно у меня руки кривые. А других вариантов нет?
Век живи - век учись
Ромыч вне форума Ответить с цитированием
Старый 06.03.2008, 12:50   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну есть конечно, например через TexcellApplication, но тогда без DBкомпонентов.

Вот специально только что проверил в АДО запрос select * from [test_pf_1$] где test_pf_1 - таблица в книге, работает на ура.
I'm learning to live...

Последний раз редактировалось Stilet; 06.03.2008 в 13:07.
Stilet вне форума Ответить с цитированием
Старый 06.03.2008, 15:23   #5
Ромыч
 
Регистрация: 05.03.2008
Сообщений: 7
По умолчанию

Значит все-таки руки кривые. Stilet а ты можешь кинуть краткую инструкцию подключения.
Век живи - век учись
Ромыч вне форума Ответить с цитированием
Старый 07.03.2008, 09:27   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Могу:
Ну форму ты наверное создаш сам, и ADOQuery тоже сам кинеш и присоединиш к гриду.

Короче, в АДО открой настройку ConnectionString. В Build выбери провайдер ODBC. Клацни Некст, и включи Use Connection String, (ну предположим что настройки на Эхель у тебя еще небыло). Клацни по Build рядом, и в открывшемся диалоге введи имя нового DSN - например MyExel. Клацни New, и выбери в провайдерах драйвер для Ехеля (сам найдеш его, ну а если его нет то дальше можеш не читать).
Некст - Бровзе и сохрани настройки в файл (называй его как хочеш пусть MyExel2).
Далее - Готово - Выбираем тип Эхеля, и файл XLS к которому "буду говорить без бамажки" по нажатию кнопки "Выбор Книги".
Выбрал? - Ок - Ок - Ок (если нуна)
На всякий пожарный клацни по Test Connection - убедись что коннект путевый.
Ок - Ок и лезем в инспекторе в SQL АДОшки, где пишем:
select * from [test_pf_1$] где test_pf_1 - таблица в книге
(ну это у меня так, а как ты свои книги и таблицы называеш я не знаю, потому как телепатор еще не включил)

Все! Активируй свой АДО и наслаждайся данными в табличке.
Ферштехен?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.03.2008, 11:42   #7
Ромыч
 
Регистрация: 05.03.2008
Сообщений: 7
По умолчанию

Спасибо, Stilet попробую
Век живи - век учись
Ромыч вне форума Ответить с цитированием
Старый 10.03.2008, 12:07   #8
Cantana
форвард
Форумчанин
 
Аватар для Cantana
 
Регистрация: 03.08.2007
Сообщений: 130
Радость

как на счет такого способа
Код:
uses 
  ComObj; 
function Xls_To_StringGrid(AGrid: TStringGrid; AXLSFile: string): Boolean; 
const 
  xlCellTypeLastCell = $0000000B; 
var 
  XLApp, Sheet: OLEVariant; 
  RangeMatrix: Variant; 
  x, y, k, r: Integer; 
begin 
  Result := False; 
  // Create Excel-OLE Object 
  XLApp := CreateOleObject('Excel.Application'); 
  try 
    // Hide Excel 
    XLApp.Visible := False; 

    // Open the Workbook 
    XLApp.Workbooks.Open(AXLSFile); 

    // Sheet := XLApp.Workbooks[1].WorkSheets[1]; 
    Sheet := XLApp.Workbooks[ExtractFileName(AXLSFile)].WorkSheets[1]; 

    // In order to know the dimension of the WorkSheet, i.e the number of rows 
    // and the number of columns, we activate the last non-empty cell of it 

    Sheet.Cells.SpecialCells(xlCellTypeLastCell, EmptyParam).Activate; 
    // Get the value of the last row 
    x := XLApp.ActiveCell.Row; 
    // Get the value of the last column 
    y := XLApp.ActiveCell.Column; 

    // Set Stringgrid's row &col dimensions. 

    AGrid.RowCount := x; 
    AGrid.ColCount := y; 

    // Assign the Variant associated with the WorkSheet to the Delphi Variant 

    RangeMatrix := XLApp.Range['A1', XLApp.Cells.Item[X, Y]].Value; 
    //  Define the loop for filling in the TStringGrid 
    k := 1; 
    repeat 
      for r := 1 to y do 
        AGrid.Cells[(r - 1), (k - 1)] := RangeMatrix[K, R]; 
      Inc(k, 1); 
      AGrid.RowCount := k + 1; 
    until k > x; 
    // Unassign the Delphi Variant Matrix 
    RangeMatrix := Unassigned; 

  finally 
    // Quit Excel 
    if not VarIsEmpty(XLApp) then 
    begin 
      // XLApp.DisplayAlerts := False; 
      XLApp.Quit; 
      XLAPP := Unassigned; 
      Sheet := Unassigned; 
      Result := True; 
    end; 
  end; 
end; 


procedure TForm1.Button1Click(Sender: TObject); 
begin 
  if Xls_To_StringGrid(StringGrid1, 'C:\Table1.xls') then 
    ShowMessage('Table has been exported!'); 
end;
Вложения
Тип файла: txt excel.txt (1.9 Кб, 175 просмотров)
dela ne v dengax a v yego kolichestve

Последний раз редактировалось Cantana; 10.03.2008 в 12:08. Причина: текстовой файл добавил
Cantana вне форума Ответить с цитированием
Старый 11.03.2008, 19:17   #9
5naip
Форумчанин
 
Аватар для 5naip
 
Регистрация: 05.10.2007
Сообщений: 536
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Могу:
Ну форму ты наверное создаш сам, и ADOQuery тоже сам кинеш и присоединиш к гриду.

Короче, в АДО открой настройку ConnectionString. В Build выбери провайдер ODBC. Клацни Некст, и включи Use Connection String, (ну предположим что настройки на Эхель у тебя еще небыло). Клацни по Build рядом, и в открывшемся диалоге введи имя нового DSN - например MyExel. Клацни New, и выбери в провайдерах драйвер для Ехеля (сам найдеш его, ну а если его нет то дальше можеш не читать).
Некст - Бровзе и сохрани настройки в файл (называй его как хочеш пусть MyExel2).
Далее - Готово - Выбираем тип Эхеля, и файл XLS к которому "буду говорить без бамажки" по нажатию кнопки "Выбор Книги".
Выбрал? - Ок - Ок - Ок (если нуна)
На всякий пожарный клацни по Test Connection - убедись что коннект путевый.
Ок - Ок и лезем в инспекторе в SQL АДОшки, где пишем:
select * from [test_pf_1$] где test_pf_1 - таблица в книге
(ну это у меня так, а как ты свои книги и таблицы называеш я не знаю, потому как телепатор еще не включил)

Все! Активируй свой АДО и наслаждайся данными в табличке.
Ферштехен?
хотел создать новую тему,да в поиске наткнулся на это.Как раз по моей проблеме.
Я чето никак не пойму где ты "ADOQuery присоединиш к гриду"...я их никак не могу соединить. У меня Delphi 7.
Вообще, проблема у меня состоит в том, что надо подключиться к базе MSSQL к определенной таблице и начать сравнивать, есть ли в БД записи, находящиеся в екселевском файле.
Моэжет быть это как-то можно проще сделать?
rocklistener...
5naip вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание новых таблиц в Access через Delphi mopozoff БД в Delphi 25 05.12.2009 20:18
Связь таблиц в Delphi adinadin111 БД в Delphi 3 10.07.2008 14:50
Интеграция таблиц excel в документ word SergeyPaterson Microsoft Office Excel 1 29.05.2008 23:39
обработка Excel таблиц JSM Общие вопросы Delphi 4 10.04.2008 13:04