|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
Редактирование Excel файла с последущим сохранением
Всем здраствуйте, я новичок передомной стоит такая задача: есть фаилик с расширением .xls который запонен всеми необходимыми данными, но в нем постоянно меняються 4 ячейки, необходимо, с помщью проги их изменять и сохранять в файле, Полазел в инете нашел подходящий код, но что то не так :
Код:
procedure TForm1.Button4Click(Sender: TObject); var XL, WB, Sheet : Variant; begin XL := CreateOLEObject('Excel.Application'); XL.Application.EnableEvents := false; WB := XL.Workbooks.Add('C:\ARB\Doc\WorkBook.xls'); Sheet := WB.ActiveSheet; DateTimePicker1.date:= Sheet.Cells[4, 1]; Edit1.Text:= Sheet.Cells[12, 91]; Edit2.Text:= Sheet.Cells[15, 20]; Edit3.Text:= heet.Cells[19, 91]; XL.Quit; end; Подскажите что не так делаю, и как реализовываеться сохранение фаила, если можно поподробней, заранее спасибо... Последний раз редактировалось Admin, 14.02.2010 в 13:51. |
#2
|
||||
|
||||
Если я правильно понял, то изменение должно происходить в эксельном файле, а вы делаете наоборот, надо так:
Код:
Sheet.Cells[12, 91] := Edit1.Text; Sheet.Cells[15, 20] := Edit2.Text; Sheet.Cells[19, 91] := Edit3.Text; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
||||
|
||||
При таком коде у меня, Edit1, Edit2,Edit3, принимают значения ячеек в файле, а мне нужно наоборот что-бы в файле, значения ячеек менялись на те что будут прописываться в проге пользователем, что бы постоянно не открывать этот фаил и не искать эти ячейки, фаил тостаточно большой....
|
#4
|
||||
|
||||
Проблема решилась, переносом файла в корень диска С:\ , но появилась другая, почемуто прога открывает фаил с именем WorkBook1, хотя везде явным образом указан фаил, WorkBook, не поиму в чем причина, просмотрел весь код, вроде все везде указанно верно, подскажите плиз и второй вопрос как сохранить изменения в фаиле....
|
#5
|
||||
|
||||
Скорей всего причина, в том что, прога открывает Excel не закрыв его, так как в при сообытии Form.Create прога обращаеться к файлу что бы проверить какие данные уже там загруженны и вывести в StrigGrid после этого деспетчре задач висит по 5- процессов Excel, но почему тогда он их не закрывает ведь прописанно же в коде XL.Quit. Код проги прикладываю на всякий...
Последний раз редактировалось Dead_Gigabit, 15.02.2010 в 11:05. |
#6
|
||||
|
||||
Код:
var e_app,worksht: Variant; f_name: string; begin f_name := 'c:\123.xls'; e_app := CreateOleObject('Excel.Application'); e_app.DisplayAlerts := False; e_app.WorkBooks.Open(f_name); worksht := e_app.WorkBooks[1].WorkSheets[1]; worksht.Cells[1,1] := '123'; //пример worksht.SaveAs('c:\out.xls'); e_app.Quit; end; вот так я когда то делал, попробуйте. Последний раз редактировалось Ultras, 15.02.2010 в 11:07. |
#7
|
||||
|
||||
А как сделатиь что бы сохранялся, в тот же фаил, а не в другой и как мне можно избавиться от стальки процессов Excel в памяти...
|
#8
|
||||
|
||||
Цитата:
Код:
worksht.SaveAs('c:\out.xls'); Код:
worksht.Save; на счет процессов не знаю, после сохранения файла, закрываецца Excel, процесс должен тоже убивацца, видимо у вас до закрытия не доходит... |