imho.ws |
![]() |
![]() |
![]() |
# 1 |
Guest
Сообщения: n/a
|
запись excel
Код:
unit Unit7; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, DBGrids, DB, DBTables; type TForm7 = class(TForm) Button1: TButton; Button2: TButton; StringGrid1: TStringGrid; SaveDialog1: TSaveDialog; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private function GetExcelSaveAs: String; { Private declarations } public { Public declarations } end; var Form7: TForm7; implementation uses Unit6, Unit5, ComObj; {$R *.dfm} function TForm7.GetExcelSaveAs: String; begin Result:= SaveDialog1.FileName + '.xls'; end; procedure TForm7.Button1Click(Sender: TObject); var ExcelApp, Sheet: variant; Col, Row: Word; begin if SaveDialog1.Execute then begin ExcelApp:= CreateOleObject('Excel.Application'); try ExcelApp.Visible:= False; ExcelApp.Workbooks.Add; Sheet:= ExcelApp.ActiveWorkBook.WorkSheets[1]; for Col:= 0 to StringGrid1.ColCount -1 do for Row:= 0 to StringGrid1.RowCount -1 do Sheet.Cells[Row + 1, Col +1]:= StringGrid1.Cells[Col, Row]; ExcelApp.ActiveWorkbook.SaveAs(GetExcelSaveAs); finally ExcelApp.Application.Quit; ExcelApp:= Unassigned; Sheet:= Unassigned; end; end; ShowMessage('Сохранение завершено!'); end; procedure TForm7.Button2Click(Sender: TObject); begin StringGrid1.RowCount:=31; StringGrid1.ColCount:=9; StringGrid1.ColWidths[1]:=150; StringGrid1.ColWidths[2]:=85; StringGrid1.ColWidths[3]:=85; StringGrid1.ColWidths[4]:=85; StringGrid1.ColWidths[5]:=90; StringGrid1.ColWidths[6]:=85; StringGrid1.ColWidths[7]:=85; StringGrid1.ColWidths[8]:=85; StringGrid1.Cells[1,0]:='Дата'; StringGrid1.Cells[2,0]:='Вода питьевая'; StringGrid1.Cells[3,0]:='Вода техническая'; StringGrid1.Cells[4,0]:='Вода оборотная'; StringGrid1.Cells[5,0]:='Собственные нужды'; StringGrid1.Cells[6,0]:='Итог по сводке'; StringGrid1.Cells[7,0]:='Итог по цеху'; StringGrid1.Cells[1,1]:=Form5.Edit3.Text+Form5.ComboBox1.Text+'2013'; StringGrid1.Cells[2,1]:=Form6.edit1.Text; StringGrid1.Cells[3,1]:=Form6.edit2.Text; StringGrid1.Cells[4,1]:=Form6.edit3.Text; StringGrid1.Cells[5,1]:=Form6.edit4.Text; StringGrid1.Cells[6,1]:=Form6.edit8.Text; StringGrid1.Cells[7,1]:=Form6.edit10.Text; end; end. |
![]() |
# 2 |
мод
IMHO Кодер-200(6,7,8) Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Думаю вам стоит задать просто другое имя файла в строке:
Код:
Result:= SaveDialog1.FileName + '.xls';
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям! Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru Pahan-Hubbitus. |
![]() |
![]() |
# 3 |
СуперМод
IMHO Консультант 2005-2009 Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отс
Пол: Male
Сообщения: 14 488
![]() |
Это просто-напросто даст новый файл, с другим именем.
fcdk_pavel, мне думается, что нужно: а) проверить файл на существование; если его до сих пор нет - создать, задать ширину колонок и заголовки столбцов. б) если файл существовал ранее - прочитать, получить количество непустых строк (N) и писАть вводимые данные начиная с новой (N+1); если не существовал - и только что создан - со второй (первая - заголовок) строки. Это только алгоритм, как это реализовать на Delfi (насколь я понимаю, Ваша программа именно на нём?) - не в курсе. Offtop:
Последний раз программы писАл лет 10 назад, на C++ и без использования COM.
![]() P.S. Можно ещё, из перфекционизма, при открытии уже существующего файла, спросить что с ним делать: дописать данные в конец или стереть и заменить новыми. Это, наверное, будет более правильно идеологически. ![]() А вообще форму для заполнения таблички в M$ Excel обычно принято в самом же Excel и лепить. ![]() Offtop №2:
Мне даже приходилось видеть целые БД, написанные в Excel; при сколь-нибудь заметном объёме данных работает изглючительно неторопливо, но ведь работает же... Концепт.
![]()
__________________
Не засоряйте форум "спасибами"! Для выражения благодарности существуют ПС и репутация! Соблюдайте Правила! Распространенье наше по планете Особенно заметно вдалеке: В общественном парижском туалете Есть надписи на русском языке В. Высоцкий |
![]() |
![]() |
# 4 | |
КОТовский
Регистрация: 12.03.2003
Адрес: ОренБюргер
Пол: Male
Сообщения: 1 569
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Цитата:
Вместо того что бы городить огород с таблицами в дельфе, проще выгрузить данные просто в текстовик, по формату. Далее из экселя грузишь файл макросом и раскидываешь так как тебе надо. Я сам так делал не раз и не только в эксель, но и в 1с.
__________________
Все мы финансовые гении и эффективные менеджеры, только не у всех одногруппник или сосед по даче - президент. Последний раз редактировалось Alex Dark; 28.09.2013 в 20:33. |
|
![]() |