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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.01.2008, 20:59   #11
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Преписать всю таблицу в Excel можно так
Код:
for i:=1 to StringGrid1.RowCount do
  for j:=1 to StringGrid1.ColCount do
    E.ActiveSheet.Cells[i,j].Value:=StringGrid1.Cells[j-1,i-1];
Смотрите пример...
Вложения
Тип файла: zip Excel.zip (1.4 Кб, 28 просмотров)
_Dmitry вне форума Ответить с цитированием
Старый 30.01.2008, 21:36   #12
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Дополнил пример. Теперь еще создает текстовый CSV файл, который понимает Excel
Вложения
Тип файла: zip Excel1.zip (1.7 Кб, 32 просмотров)
_Dmitry вне форума Ответить с цитированием
Старый 31.01.2008, 16:00   #13
monushka
Форумчанин
 
Аватар для monushka
 
Регистрация: 26.10.2007
Сообщений: 112
По умолчанию

А каким образом теперь можно загрузить данные из Экселя в СтрингГрид?
Я сделала вот так (с помощью книги Корнякова):
Код:

for i:=0 to SG1.RowCount do
for j:=0 to SG1.ColCount do
SG1.Cells[j,i]:='';
for i:=1 to SG1.RowCount do
for j:=1 to SG1.ColCount do
 begin
 ee:=E.ActiveSheet.Cells[i+2,j].Text;
 SG1.Cells[j-1,i-1]:=ee;
 end;
Но так получается только для открытого листа.
А вот как сделать с помощью OpenDialog'а? Чтобы выбрать самому файл и он загружался в СтрингГрид... Было бы еще не плохо узнать, можно ли каким-то образом определять число столбцов и строк в документе Эксель и создавать такой же стринггрид?
Спасибо за помощь!!
If you wanna make the world a better place take a look at yourself and then make a change!
monushka вне форума Ответить с цитированием
Старый 31.01.2008, 19:11   #14
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

По просьбе monushka залил примеры с диска Корнякова на Rapidshare
http://rapidshare.com/files/88096854...elphi.rar.html
_Dmitry вне форума Ответить с цитированием
Старый 31.01.2008, 21:55   #15
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Кстати, господа и дамы, рекомендую посмотреть статейку "Зарисовка на тему экспорта в Excel"
Так пункт третий, как кучу данных передать за один раз (это может в десятки раз ускорить выполнение экспорта... конечно, если время выполнения критично )
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.02.2008, 12:40   #16
monushka
Форумчанин
 
Аватар для monushka
 
Регистрация: 26.10.2007
Сообщений: 112
По умолчанию

Ознакомилась я со всей информацией, представленной в предыдущих двух сообщениях... Но что-то так и не пойму, каким образом можно загрузить данные из документа Excel в StringGrid?? Во всех примерах используется либо Memo, либо ListBox... Но ведь это совсем другое, тут все понятно. А вот как цикл для StringGrid'а сделать?
If you wanna make the world a better place take a look at yourself and then make a change!
monushka вне форума Ответить с цитированием
Старый 01.02.2008, 12:52   #17
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Измените код #11, сделайте наоборот
Код:
E:=CreateOleObject('Excel.Application');
E.Visible:=true;
if not OpenDialog1.Execute then exit;
E.WorkBooks.Open(OpenDialog1.FileName);

for i:=1 to StringGrid1.RowCount do
  for j:=1 to StringGrid1.ColCount do
     StringGrid1.Cells[j-1,i-1]:=E.ActiveSheet.Cells[i,j].Value;
_Dmitry вне форума Ответить с цитированием
Старый 02.02.2008, 10:00   #18
monushka
Форумчанин
 
Аватар для monushka
 
Регистрация: 26.10.2007
Сообщений: 112
По умолчанию

_Dmitry, а как в приведенном Вами коде можно сделать так, чтобы StringGrid имел такое же кол-во строк, что и Excel. Т.е. пусть изначально СтрингГрид имеет 1 строку, а Эксель - 50 к примеру. Можно ли подсчитать число строк в Экселе и добавить необходимое количество в СтрингГрид? Имеется ли у Экселя параметр вроде RowCount?
If you wanna make the world a better place take a look at yourself and then make a change!
monushka вне форума Ответить с цитированием
Старый 02.02.2008, 10:06   #19
monushka
Форумчанин
 
Аватар для monushka
 
Регистрация: 26.10.2007
Сообщений: 112
По умолчанию

Я сделала вот так:
Код:
begin
E:=CreateOleObject('Excel.Application');
if not OpenDialog1.Execute then exit;
E.WorkBooks.Open(OpenDialog1.FileName);
k:=1;
for i:=1 to SG1.RowCount do
 if SG1.RowCount <= k then
  SG1.RowCount:=SG1.RowCount+1;
for j:=1 to 5 do
SG1.Cells[j-1,k-1]:=E.ActiveSheet.Cells[k,j].Value;
end;
Программа запускается, но из открытого файлы копируется только первая строка и добавляется еще одна строка в СтрингГрид.
Подскажите, пожалуйста, что неправильно?
If you wanna make the world a better place take a look at yourself and then make a change!

Последний раз редактировалось monushka; 02.02.2008 в 10:11.
monushka вне форума Ответить с цитированием
Старый 02.02.2008, 11:43   #20
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Количество заполненных строк и столбцов:
Код:
Rows:=E.ActiveSheet.UsedRange.Rows.Count;
Columns:=E.ActiveSheet.UsedRange.Columns.Count;
_Dmitry вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Borland C++ Builder - импорт из Excel в StringGrid nuser C++ Builder 3 10.01.2015 12:38
из StringGrid в Excel artemavd Общие вопросы Delphi 6 24.07.2008 18:14
Excel и StringGrid... Roof Общие вопросы Delphi 2 18.09.2007 17:07
Delphi(Stringgrid) подскажите zzzzz Помощь студентам 1 14.07.2007 11:51
Excel и StringGrid apx_angel Компоненты Delphi 2 20.02.2007 00:20