Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.81/64: Рейтинг темы: голосов - 64, средняя оценка - 4.81
 Аватар для RedBull
3 / 3 / 0
Регистрация: 01.07.2010
Сообщений: 53

Отображение данных из Excel в TStringGrid.

05.11.2010, 08:22. Показов 13623. Ответов 40
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
подскажите пожалуйста как отобразить таблицу Excel-я в DBGrid!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.11.2010, 08:22
Ответы с готовыми решениями:

корректное отображение импортированных данных в формулах excel
здравствуйте. хочу испросить совета у знающих и авторитетных людей. проблема состоит в следующем: не могу понять почему содержимое...

Импорт из MS Excel в TStringGrid
Здравствуйте. Не получается импортировать данные из Excel. На Builder 6 работает нормально, но не получется с использованием компилятора...

C++ XE7 -Чтение файла с FTP устройством на Android и отображение его в TStringGrid
Добрый день! На FTP лежит файл report.txt. Его надо считать и отобразить в TStringGrid. Компилятор - Embarcadero C++ XE7 Платформа...

40
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
05.11.2010, 09:06
RedBull, ну вам просто надо подключить средствами адо этот документ как таблицу, ну а дальше - это уже дело техники...
0
 Аватар для RedBull
3 / 3 / 0
Регистрация: 01.07.2010
Сообщений: 53
05.11.2010, 10:24  [ТС]
ты мне поможешь?с кодом?
0
 Аватар для anonimus
2184 / 1255 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
05.11.2010, 22:48
Вывод StringGrid в Excel.
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
06.11.2010, 10:02
RedBull, ну разве нескучно программировать без экспериментов?
в общем в силу некоторых причин сам проэкспериментировать не могу, но последовательность примерно такая:
1) создаем алиас в ODBC по аналогии с Excel Files (там вроде бы только папку надо указать)
2) в AdoConnection выбираем провайдера Microsoft OLE DB Providers for ODBC
3) указываем в адотаблице соединение и если все будет правильно, то в имени таблицы выпадет список с вашими файлами Excel
0
 Аватар для RedBull
3 / 3 / 0
Регистрация: 01.07.2010
Сообщений: 53
06.11.2010, 11:47  [ТС]
Мне нужно не с StringGrid в Excel!
а наоборот,файл Excel-a нужно открыть в Delphi!!может в другом обьекте открыть можно?
Я уже нэт прошарил на несколько раз,но там есть только Вывод своей БД из Delphi в Excel
0
 Аватар для anonimus
2184 / 1255 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
06.11.2010, 13:01
Цитата Сообщение от RedBull Посмотреть сообщение
Мне нужно не с StringGrid в Excel!
а ты подумать не хочешь? примеров куча, просто переделай под себя, или тебе готовое подавай
0
 Аватар для Mawrat
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
06.11.2010, 14:22
RedBull, вот шаблон для чтения данных из книги Excel:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
uses
  ComObj;
 
procedure TForm1.Button1Click(Sender: TObject);
const
  BookName = 'Книга1.xls';
var
  ExApp, ExBook, ExSheet : Variant;
  Col, Col1, Col2, Row, Row1, Row2 : Integer;
  FileName, S : String;
begin
  try
    //Запуск Excel и подключение к корневому объекту.
    ExApp := CreateOleObject('Excel.Application');
    //Если требуется, делаем окно Excel видимым.
    ExApp.Visible := True;
    //Открываем рабочую книгу и получаем на неё ссылку.
    FileName := ExtractFilePath(Application.ExeName) + BookName;
    ExBook := ExApp.WorkBooks.Open(FileName:=FileName);
    //Получаем ссылку на первый рабочий лист в рабочей книге.
    ExSheet := ExBook.WorkSheets[1];
 
    //Перебор строк таблицы, расположенной на листе рабочей книги.
    //Предположим, таблица имеет 8 столбцов с номерами 1..8.
    //Данные таблицы расположены, начиная с 3 строки и до конца
    //используемого диапазона на этом листе.
    Row1 := 3;
    Col1 := 1;
    Row2 := ExSheet.UsedRange.Row + ExSheet.UsedRange.Rows.Count - 1;
    Col2 := 8;
    for Row := Row1 to Row2 do begin
      for Col := Col1 to Col2 do begin
        //Читаем данные очередной ячейки.
        S := ExSheet.Cells[Row, Col].Value;
        //Как-то обрабатываем полученные данные.
        //...
        //...
        //...
      end;
    end;
    //Если требуется, закрываем рабочую книгу.
    //ExBook.Close;
    //Если требуется, выходим из Excel.
    //ExApp.Quit;
  finally
    //Отключаемся от объектов OLE-автоматизации.
    ExApp := Unassigned;
    ExBook := Unassigned;
    ExSheet := Unassigned;
  end;
end;
1
 Аватар для RedBull
3 / 3 / 0
Регистрация: 01.07.2010
Сообщений: 53
06.11.2010, 15:00  [ТС]
Вот именно если бы я смог сам додуматься то я БЫ САМ СДЕЛАЛ!!!но моих мозгов не хватает для этой проблемы, вот поэтому я и обратился сюда,иначе зачем этот сайт вообще создан?
возможно ли такое Чтобы прсто тупо отобразить Экселевскую таблицу (из ДВУХ колонок) в Delphi,и не нужно ни какого редактирования этой таблицы,и сохранение и т д.Мне нужно просто тупо открыть её в Delphi,а дальше я сам разберусь!
Плз кто знает напишите код=\
0
 Аватар для anonimus
2184 / 1255 / 143
Регистрация: 28.04.2010
Сообщений: 4,592
06.11.2010, 15:07
Цитата Сообщение от RedBull Посмотреть сообщение
Мне нужно просто тупо открыть её в Delphi
тебе экселевский файл нужно открыть и считать данные из таблицы?
Mawrat привел пример, с комментариями )
0
 Аватар для Mawrat
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
06.11.2010, 15:37
Вот более конкретный вариант. Читает данные с листа MS Excel в таблицу типа TStringGrid.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
uses
  ComObj;
 
procedure TForm1.Button1Click(Sender: TObject);
const
  BookName = 'Книга1.xls';
var
  ExApp, ExBook, ExSheet : Variant;
  C, R, Col, Col1, Col2, Row, Row1, Row2 : Integer;
  FileName, S : String;
  Sg : TStringGrid;
begin
  Sg := StringGrid1;
  try
    //Запуск Excel и подключение к корневому объекту.
    ExApp := CreateOleObject('Excel.Application');
    //Если требуется, делаем окно Excel видимым.
    ExApp.Visible := True;
    //Открываем рабочую книгу и получаем на неё ссылку.
    FileName := ExtractFilePath(Application.ExeName) + BookName;
    ExBook := ExApp.WorkBooks.Open(FileName:=FileName);
    //Получаем ссылку на первый рабочий лист в рабочей книге.
    ExSheet := ExBook.WorkSheets[1];
 
    //Определяем границы таблицы на листе Excel.
    Row1 := 3;
    Col1 := 1;
    Row2 := ExSheet.UsedRange.Row + ExSheet.UsedRange.Rows.Count - 1;
    Col2 := ExSheet.UsedRange.Column + ExSheet.UsedRange.Columns.Count - 1;
 
    //Задаём размер таблицы StringGrid1 в соответствие с размером
    //таблицы на листе Excel.
    Sg.RowCount := Row2 - Row1 + 1;
    Sg.ColCount := Col2 - Col1 + 1;
    R := 0;
    for Row := Row1 to Row2 do begin
      C := 0;
      for Col := Col1 to Col2 do begin
        //Читаем данные очередной ячейки на листе Excel
        //и записываем их в ячейку в StringGrid1.
        Sg.Cells[C, R] := ExSheet.Cells[Row, Col].Value;
        //Переход к следующему столбцу StringGrid1.
        Inc(C);
      end;
      //Переход к следующей строке StringGrid1.
      Inc(R);
    end;
    //Если требуется, закрываем рабочую книгу.
    //ExBook.Close;
    //Если требуется, выходим из Excel.
    //ExApp.Quit;
  finally
    //Отключаемся от объектов OLE-автоматизации.
    ExApp := Unassigned;
    ExBook := Unassigned;
    ExSheet := Unassigned;
  end;
end;
Вложения
Тип файла: rar ReadFromExcel.rar (197.6 Кб, 157 просмотров)
2
 Аватар для RedBull
3 / 3 / 0
Регистрация: 01.07.2010
Сообщений: 53
06.11.2010, 17:11  [ТС]
Мне нужно его вставить любым образом в Delphi,тот код который написан выше он открывает Excel !
а мне нужно в DELPHI запихать эту таблицу с Excela
0
 Аватар для Mawrat
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
06.11.2010, 17:36
Этот код открывает Excel и забирает данные с листа рабочей книги в программу. Чтобы окно Excel было скрыто, надо поставить:
Delphi
1
ExApp.Visible := False; //True - на время отладки.
А если надо работать с файлом Excel, не запуская сам MS Excel - для этого надо или самому писать код разбора формата Excel файла или применять для работаты с файлами Excel специальны компоненты. Например, EMS Advanced Data Import VCL. Также, там есть компоненты для экспорта данных в файлы различных форматов. На этом сайте можно поискать прежние версии - они возможно бесплатные. И в других местах в сети можно поискать.
2
 Аватар для RedBull
3 / 3 / 0
Регистрация: 01.07.2010
Сообщений: 53
06.11.2010, 18:15  [ТС]
ага,большое спасибо!Теперь разобрался,теперь помогите мне зделать чтобы с компонентом OpenDialog работать,чтобы он вставлял любой файл екселя!ну в смысле чтобы я смог выбрать какой файл вставить!
0
 Аватар для Mawrat
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
06.11.2010, 19:15
С применением TOpenDialog:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
uses
  ComObj;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  ExApp, ExBook, ExSheet : Variant;
  C, R, Col, Col1, Col2, Row, Row1, Row2 : Integer;
  FileName : String;
  Sg : TStringGrid;
begin
  if OpenDialog1.InitialDir = '' then
    OpenDialog1.InitialDir := ExtractFilePath(Application.ExeName)
  ;
  if not OpenDialog1.Execute then Exit;
  FileName := OpenDialog1.FileName;
  if not FileExists(FileName) then begin
    ShowMessage('Внимание! Файл с указанным именем не существует. Действие отменено.');
    Exit;
  end;
 
  Sg := StringGrid1;
  try
    //Запуск Excel и подключение к корневому объекту.
    ExApp := CreateOleObject('Excel.Application');
    //Если требуется, делаем окно Excel видимым.
    ExApp.Visible := True;
    //Открываем рабочую книгу и получаем на неё ссылку.
    ExBook := ExApp.WorkBooks.Open(FileName:=FileName);
    //Получаем ссылку на первый рабочий лист в рабочей книге.
    ExSheet := ExBook.WorkSheets[1];
 
    //Определяем границы таблицы на листе Excel.
    Row1 := 3;
    Col1 := 1;
    Row2 := ExSheet.UsedRange.Row + ExSheet.UsedRange.Rows.Count - 1;
    Col2 := ExSheet.UsedRange.Column + ExSheet.UsedRange.Columns.Count - 1;
 
    //Задаём размер таблицы StringGrid1 в соответствие с размером
    //таблицы на листе Excel.
    //Предусматриваем случай, если на листе нет данных.
    if (Row2 - Row1 + 1) <= Sg.FixedRows then
      Sg.RowCount := Sg.FixedRows + 1
    else
      Sg.RowCount := Row2 - Row1 + 1
    ;
    if (Col2 - Col1 + 1) <= 0 then
      Sg.ColCount := 1
    else
      Sg.ColCount := Col2 - Col1 + 1
    ;
    //Читаем данные с листа Excel.
    R := 0;
    for Row := Row1 to Row2 do begin
      C := 0;
      for Col := Col1 to Col2 do begin
        //Читаем данные очередной ячейки на листе Excel
        //и записываем их в ячейку в StringGrid1.
        Sg.Cells[C, R] := ExSheet.Cells[Row, Col].Value;
        //Переход к следующему столбцу StringGrid1.
        Inc(C);
      end;
      //Переход к следующей строке StringGrid1.
      Inc(R);
    end;
    //Если требуется, закрываем рабочую книгу.
    //ExBook.Close;
    //Если требуется, выходим из Excel.
    //ExApp.Quit;
  finally
    //Отключаемся от объектов OLE-автоматизации.
    ExApp := Unassigned;
    ExBook := Unassigned;
    ExSheet := Unassigned;
  end;
end;
Вложения
Тип файла: rar ReadFromExcel.rar (205.8 Кб, 103 просмотров)
2
 Аватар для RedBull
3 / 3 / 0
Регистрация: 01.07.2010
Сообщений: 53
07.11.2010, 06:00  [ТС]
Спасибо!Всё так как я хотел но толоько одна проблема которую не исправить она не читает файл в 100008 строк =(((
программа зависает=(
это же не реально исправить?
или нужно меньше строк делать в Excele
Вложения
Тип файла: rar oscgrf_000.rar (290.3 Кб, 64 просмотров)
0
0 / 0 / 0
Регистрация: 23.07.2014
Сообщений: 10
07.11.2010, 09:26
Хм столкнулся с подобной проблемой надо попробовать.

Добавлено через 18 минут
а как при этом отсортировать значение в строках и столбцах по возрастанию ?
0
 Аватар для RedBull
3 / 3 / 0
Регистрация: 01.07.2010
Сообщений: 53
07.11.2010, 11:02  [ТС]
я ХЗ я буду делать просто через поиск задаёшь время из списка и отображается только то что мне нужно!
0
 Аватар для RedBull
3 / 3 / 0
Регистрация: 01.07.2010
Сообщений: 53
27.12.2010, 14:44  [ТС]
У меня вот вопрос,программу я сделал до конца!Но почему я не могу поместить на вторую и последующую форму этот код?я хочу чтоб на 5-ти формах загружались файлы так же!!!
для каждой формы соответствует свой файл,но получается загружать его только на первой=()
в чём дело?скажите что исправить чтобы можно было загружать Exel в StringGrid в каждой форме!
0
 Аватар для Mawrat
13114 / 5895 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
27.12.2010, 17:27
Код загрузки помещён в обработчик нажатия кнопки? Если так, то также можно добавить кнопки на каждую из форм. И код их обработчиков сделать точно таким же. - Всё должно работать.
Если код загрузки размещён в процедуре, тогда в модулях каждой из форм надо объявить в Uses тот модуль, где объявлена процедура. В качестве параметров такой процедуры должны быть: имя файла Excel и ссылка на StringGrid, в который надо загружать данные. И в каждой из форм, тогда, размещаем кнопку, в обработчике которой надо прописать вызов этой процедуры с нужными параметрами.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.12.2010, 17:27
Помогаю со студенческими работами здесь

Неправильное отображение даты при импорте данных из Excel в DataGridView
Привет Импортирую данные из Excel в DataGridView: private void button1_Click(object sender, EventArgs e) { ...

Ввод данных в TStringGrid
Подскажите как осуществлять ввод данных в ячейки TStringGrid , чтобы потом переносить, после ввода в каждую ячейку, эти данные в другой...

Расчет данных в Tstringgrid по формуле
Здравствуйте! Тема такая, пишу программу для расчета данных по формуле, введенной в компонент Tedit, суть в том, что допустим в эдит...

Импорт данных из Tstringgrid в Word
Ребят, прошу вашей помощи, я физически не успеваю этого сделать, так как на мне висит еще две процедуры, суть в том, чтоб подстроить этот...

Загрузка данных из файла .txt в TStringGrid
Доброго времени суток, уважаемые форумчане! Подскажите пожалуйста, как загрузить данные из txt файла в stringgrid? Гуглил, гуглил, но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru