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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.05.2014, 21:44   #1
Antoha5101
 
Регистрация: 12.05.2014
Сообщений: 6
По умолчанию Из delphi в excel

Здравствуйте. помогите пожалуйста с маленькой проблемкой. есть шаблон Excel. в него я вписываю с помощью edit данные. как можно сделать кнопку сохранения, так что бы имя сохраняемого файла было одним из значения edit. например если в edit 4 написан заводской номер, то имя файла и будет заводской номер. помогите если не трудно.
Код Delphi

Код:
procedure TForm1.Button2Click(Sender: TObject);
 var xls:variant;
begin
xls:= CreateOLEObject('Excel.Application');
xls.WorkBooks.Open(FileName:='D:\2.xls');
xls.Visible:=false;
xls.Range['A6']:=Edit1.Text;
xls.Range['E8']:=Edit2.Text;
xls.Range['B12']:=Edit3.Text;
xls.Range['E13']:=Edit4.Text;
xls.Range['E14']:=Edit5.Text;
xls.Range['B31']:=Edit7.Text;
xls.Range['D31']:=Edit8.Text;
xls.Range['B32']:=Edit6.Text;
xls.Range['D32']:=Edit9.Text;
xls.Range['C40']:=Edit10.Text;
xls.Range['E40']:=Edit11.Text;
xls.Range['C45']:=Edit12.Text;
xls.Range['C46']:=Edit13.Text;
xls.Range['E45']:=Edit14.Text;
xls.Range['E46']:=Edit15.Text;
xls.Range['E76']:=Edit16.Text;
xls.Range['E109']:=Edit17.Text;
xls.Range['A29']:=Edit18.Text;
xls.Range['E21']:=DateTimePicker1.DateTime;
end;


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 12.05.2014 в 22:04.
Antoha5101 вне форума Ответить с цитированием
Старый 12.05.2014, 22:03   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Antoha5101 Посмотреть сообщение
например если в edit 4 написан заводской номер, то имя файла и будет заводской номер
а если в edit4 записано что-то другое, то что будет именем файла?
И как это определить, заводской номер там или нет?!

так, что ли?
Код:
if Trim(Edit4.Text)='' then begin
  ShowMessage('Нет данных в поле Edit4');
  Exit;
end
xls.WorkBooks.Open(FileName:='D:\'+Trim(Edit4.Text)+'.xls');

p.s. будьте бдительны - далеко не все символы допустимы в имене файла. возможно, понадобится дополнительный контроль за содержимым Edit4...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.05.2014, 22:09   #3
Antoha5101
 
Регистрация: 12.05.2014
Сообщений: 6
По умолчанию

В этом edit 4 планируется заводской номер не больше 10 символов... он может быть как цифровой так и буквенный. вот как то так.
Antoha5101 вне форума Ответить с цитированием
Старый 12.05.2014, 22:14   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну, я как-то уже предложил вариант решения.
подходит?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.05.2014, 22:22   #5
Antoha5101
 
Регистрация: 12.05.2014
Сообщений: 6
По умолчанию

Этот вариант для открытия файла, а мне нужно чтоб он сохранил созданный документ с названием из значения edit 4.((
Antoha5101 вне форума Ответить с цитированием
Старый 12.05.2014, 22:45   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а так?
Код:
 var ExcelApp, Sheet:variant;
begin
  if Trim(Edit4.Text)='' then begin
    ShowMessage('Нет данных в поле Edit4');
    Exit;
  end;

  ExcelApp := CreateOleObject('Excel.Application');
  try
    ExcelApp.Visible := false;

    ExcelApp.Workbooks.Add;
    Sheet := ExcelApp.ActiveWorkbook.Worksheets[1];

    // Sheet.Cells[Row, Col] := ... ;

    Sheet.Range['A6']:=Edit1.Text;
    Sheet.Range['E8']:=Edit2.Text;
    Sheet.Range['B12']:=Edit3.Text;
    ....

    ExcelApp.ActiveWorkbook.SaveAs('D:\'+Trim(Edit4.Text)+'.xls');

    ShowMessage('Ok!');
  finally
    ExcelApp.Application.Quit;
    ExcelApp := unassigned;
  end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.05.2014, 23:44   #7
Antoha5101
 
Регистрация: 12.05.2014
Сообщений: 6
Хорошо

Спасибо за помощь завтра попробую.
Antoha5101 вне форума Ответить с цитированием
Старый 13.05.2014, 20:06   #8
Antoha5101
 
Регистрация: 12.05.2014
Сообщений: 6
По умолчанию

Может что то я не правильно делаю но у меня не получилось...
Antoha5101 вне форума Ответить с цитированием
Старый 13.05.2014, 20:29   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Antoha5101 Посмотреть сообщение
Может что то я не правильно делаю но у меня не получилось...
жаль...
я у себя этот код проверил - он отработал...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.05.2014, 23:20   #10
Antoha5101
 
Регистрация: 12.05.2014
Сообщений: 6
По умолчанию

получилось вот так
procedure TForm1.Button2Click(Sender: TObject);
var xls, Book, Sheet: variant;
begin
if Trim (Edit4.Text)=''then begin
ShowMessage ('Íåò äàííûõ â ïîëå çàâîäñêîé íîìåð');
exit;
end;
xls:= CreateOLEObject('Excel.Application' );
Book:=xls.WorkBooks.Open(FileName:= 'D:\2.xls');
xls.Visible:=false;
Sheet:=xls.Worksheets[2];
xls.Range['A6']:=Edit1.Text;
xls.Range['E8']:=Edit2.Text;
xls.Range['B12']:=Edit3.Text;
xls.Range['E13']:=Edit4.Text;
xls.Range['E14']:=Edit5.Text;
xls.Range['B31']:=Edit7.Text;
xls.Range['D31']:=Edit8.Text;
xls.Range['B32']:=Edit6.Text;
xls.Range['D32']:=Edit9.Text;
xls.Range['C40']:=Edit10.Text;
xls.Range['E40']:=Edit11.Text;
xls.Range['C45']:=Edit12.Text;
xls.Range['C46']:=Edit13.Text;
xls.Range['E45']:=Edit14.Text;
xls.Range['E46']:=Edit15.Text;
xls.Range['E76']:=Edit16.Text;
xls.Range['E109']:=Edit17.Text;
xls.Range['A29']:=Edit18.Text;
xls.Range['E21']:=DateTimePicker1.DateTime;
xls.DisplayAlerts:=False;
xls.ExcelBasic.FilePrintSetup(Print er:='Duplex', DoNotSetAsSysDefault:=true); //print
xls.ActiveDocument.PrintOut(Copies: =3);
Book.SaveAs(Edit4.Text+'.xls'); //save
xls.Quit;

end;
спасибо за помощь
Antoha5101 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
из Delphi в Excel mxroman Помощь студентам 25 18.01.2012 12:30
Delphi Excel (сохранение записи в Excel) Кас Алина Общие вопросы Delphi 4 28.05.2010 09:17
Delphi+Excel goldlider Общие вопросы Delphi 2 27.05.2010 11:39
как при импорте из Excel в delphi узнать сколько заполненных строк в книге Excel?чтобы организовать цикл betirsolt БД в Delphi 1 17.01.2010 18:51
Delphi ->Excel->График по таблице->Delphi Avalonix БД в Delphi 2 30.10.2008 14:04