Запись и чтение Excel.

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
dimafe6
Сообщения: 12
Зарегистрирован: 11 мар 2010, 19:59

Здраствуйте. Подскажите как реализировать возможность записывать информацию с полей в лист Excel. После записи, при выборе соответствующего пункта меню, производить чтение информации из Excel, с выводом результата в те же поля TEdit.Перемещение по листу Excel осуществлять с помощью SpinEdit. Например у меня на форме находится 12 полей TEdit,3 ComboBox,1 RichEdit.
Перед записью проверять заполненость столбца 1 в Excel, и устанавливать счётчик SpinEdit в положение первой незанятой ячейки столбца 1.
При выборе пункта меню:"Добавить запись" нужно записать информацию со всех полей в лист Excel, и прибавить счётчику SpinEdit единицу, чтобы можно было записать информацию в следующую строчку.
При выборе пункта меню:"Прочитать" нужно выводить информацию по строчкам во все поля. Индексом строчки служит SpinEdit.
Я сделал так:
Вот функция проверки на занятость ячеек столбца 1:

Код: Выделить всё

Function NoUsedCells(FindIN:TExcelApplication):integer;
var i,n:integer;
Begin
i:=0;n:=0;
Repeat
i:=i+1;
begin
if FindIN.Cells.Item[i,1].Value<>'' then n:=n+1;
end;
until FindIN.Cells.Item[i,1].Value='';
n:=n-1;
Result:=n;
end;
Вот сама запись:

Код: Выделить всё

"Добавить запись":
...
IndexCur:=NoUsedCells(ExcelApplication1); //присваиваю начальную позицию для записи
ExcelApplication1.Cells.Item[IndexCur,1].Value:=Edit1.Text; //записываю значение полей
...//записываю значение полей
ExcelApplication1.Cells.Item[IndexCur,1].Value:=Edit12.Text; //записываю значение полей
SpinEdit1.Value:=SpinEdit1.Value+1;
ExcelApplication1.ActiveWorkbook.Close(True,FExcel,False,0); //закрываю и сохраняю книгу
 
Вот чтение:

Код: Выделить всё

"Прочитать":
Edit1.Text:=ExcelApplication1.Cells.Item[SpinEdit1.Value,1].Value;//читаю
... //читаю
Edit12.Text:=ExcelApplication1.Cells.Item[SpinEdit1.Value,1].Value; //читаю
ExcelApplication1.ActiveWorkbook.Close(True,FExcel,False,0); //закрываю и сохраняю книгу
Правильно ли я всё ето делаю? Может есть лучший алгоритм?Или проще использовать Access?. Пишу для себя, поетому нужно все сделать как можно проще. Заранее благодарен.
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

работает? хорошо! :)
Изображение
Аватара пользователя
Oleg_Rus
Сообщения: 335
Зарегистрирован: 16 окт 2006, 09:56
Откуда: г.Улан-Удэ, респ.Бурятия, Российская Федерация
Контактная информация:

Я бы предпочел работу с ACCESS и удобней (лично для меня) и привычней...
e-mail: garmayev@yandex.ru
---------------------------------------------------------------------------
<a href="http://nick-name.ru/sertificates/711965/"><img src="http://nick-name.ru/img.php?nick=Garmay ... =2&text=t5" alt="Никнейм Garmayev зарегистрирован!" /></a>
dr.Jekill
Сообщения: 526
Зарегистрирован: 03 янв 2009, 23:17
Откуда: Voronezh
Контактная информация:

Я думаю в Вашем случае будет проще работать с БД Access.
Связка Access+ADO+Delphi избавит Вас от многих проблем.
Нет религии выше истины
Ответить