| 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 525
![]() |
Это просто-напросто даст новый файл, с другим именем.
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 в 21:33. |
|
|
|