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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2011, 23:46   #1
portible
Пользователь
 
Регистрация: 15.09.2011
Сообщений: 17
Восклицание Delphi + StringGrid + Excel . . .

Есть программа которая должна печатать квитанции, которую мне помогли сделать и в которой я не сильно разбираюсь. =)

есть заполненный stringgrid2, и кнопка "Экспорт в Ексель" которая создает книгу и переносит весь stringgrid2 в ексель и сохраняет его в папку с программой.

Код:
 procedure TForm1.Button2Click(Sender: TObject);
var
Excel, WorkBook, Sheet:variant;
i, j: integer;
FName: string;
begin
FName :=extractfilepath(paramstr(0))+datetostr(date)+' report.xls';
Excel:=CreateOleObject('Excel.Application');
Excel.DisplayAlerts:=False;
Excel.Visible:= True;
Workbook:=Excel.
Workbooks.Add;
Workbook.SaveAs(FName);
Sheet:= Workbook.ActiveSheet;
for i:= 0 to StringGrid2.RowCount - 1 do
begin
for j:= 0 to StringGrid2.ColCount - 1 do
Sheet.Cells[i+1, j+1]:= StringGrid2.Cells[j, i];
end;
Sheet.Cells[2,8]:='Сумма дол. '+edit2.Text;
Sheet.Cells[3,8]:='Сумма евро. '+edit3.Text;
Workbook.Save;
Workbook.Close;
Excel.Quit;
Excel:= UnAssigned;
MessageBox(Handle,'Экспорт завершен!','Внимание!',0);
end;
есть ещё одна кнопка "Печать", которая должна печатать ту квитанцию которую только что создала программа и в дальнейшем...

P.S. при создании квитанции чтоб она не появлялась перед главной формой, и после печати ексель не оставался на панели задач.

Не знаю или activesheet.printout; подойдет. Прошу помощи.




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

Последний раз редактировалось portible; 06.12.2011 в 12:08.
portible вне форума Ответить с цитированием
Старый 07.12.2011, 12:16   #2
portible
Пользователь
 
Регистрация: 15.09.2011
Сообщений: 17
Восклицание

Ребята помогите пожалуйста . . .
portible вне форума Ответить с цитированием
Старый 07.12.2011, 12:59   #3
<- DelpHIFanat ->
Пользователь
 
Аватар для <- DelpHIFanat ->
 
Регистрация: 07.11.2011
Сообщений: 58
По умолчанию

Я бы сделал немного по-другому: вывел данные в отчёт Excel, и сразу же показал бы результат. Так, мне кажется, проще. А потом его можно сохранять как нужно, редактировать, печатать... Я немного изменил и отформатировал Ваш код (призываю форматировать код, не не писать так: сломайсебеглазакод, не для врагов ведь пишете, а, прежде всего, для себя).
Вложения
Тип файла: zip Delphi & Excel.zip (8.4 Кб, 25 просмотров)
Лучше вообще не иметь знаний о чём-то, чем иметь неправильные знания об этом!..
<- DelpHIFanat -> вне форума Ответить с цитированием
Старый 07.12.2011, 23:49   #4
portible
Пользователь
 
Регистрация: 15.09.2011
Сообщений: 17
По умолчанию

Я б с радостью так сделал но это преподаватель настаивает... Оо гемор...
и ещё чтоб в название сохранённого excel вставлялась не только дата но и время

вставляю timetostr(time)
выдает ошибку, как можно по другому вывести ??


Код:
procedure TForm1.Button2Click(Sender: TObject);
var
Excel, WorkBook, Sheet:variant;
i, j: integer;
FName: string;
begin
IF stringgrid2.Cells[0,1]='' then 

MessageBox(Handle,'Таблица пуста заполните её','Внимание!',0)

else begin

FName :=extractfilepath(paramstr(0))+datetostr(date)+timetostr(time)+' report.xls';

Excel:=CreateOleObject('Excel.Application');
Excel.DisplayAlerts:=False;
Excel.Visible:= True;

Workbook:=Excel.
Workbooks.Add;
Workbook.SaveAs(FName);
Sheet:= Workbook.ActiveSheet;

for i:= 0 to StringGrid2.RowCount - 1 do
begin

for j:= 0 to StringGrid2.ColCount - 1 do
Sheet.Cells[i+1, j+1]:= StringGrid2.Cells[j, i];
end;
Sheet.Cells[2,8]:='Сума,дол. '+edit2.Text;
Sheet.Cells[3,8]:='Сума,грн. '+edit3.Text;

Workbook.Save;
Workbook.Close;

Excel.Quit;
Excel:= UnAssigned;

MessageBox(Handle,'Єкспорт завершен','Внимание!',0);
end;
 end;
Изображения
Тип файла: jpg Безымянный.jpg (47.5 Кб, 55 просмотров)
portible вне форума Ответить с цитированием
Старый 08.12.2011, 14:51   #5
<- DelpHIFanat ->
Пользователь
 
Аватар для <- DelpHIFanat ->
 
Регистрация: 07.11.2011
Сообщений: 58
По умолчанию

Вот заменил и прокатывает.
Код:
FName :=extractfilepath(paramstr(0))+FormatDateTime('dd.mm.yyyy', Date)+' '+
FormatDateTime('hh.mm.ss', Time())+' report.xls';
Лучше вообще не иметь знаний о чём-то, чем иметь неправильные знания об этом!..

Последний раз редактировалось <- DelpHIFanat ->; 08.12.2011 в 14:56.
<- DelpHIFanat -> вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
StringGrid и MS Excel ChEaTeR-abc Помощь студентам 1 05.07.2010 09:04
Excel и StringGrid в Delphi monushka Помощь студентам 28 28.10.2009 16:33
из StringGrid в Excel artemavd Общие вопросы Delphi 6 24.07.2008 18:14
Excel и StringGrid... Roof Общие вопросы Delphi 2 18.09.2007 17:07
Excel и StringGrid apx_angel Компоненты Delphi 2 20.02.2007 00:20