imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 16.09.2013, 11:21     # 1
fcdk_pavel
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.
Вот кусок кода который создает файл Экселя Как сделать так чтобы при следующем расчете программы(в предыдущих модулях) новые расчеты попадали уже в созданный файл(добавление в файл новых результатов расчета) а старые не исчезал(не перезаписывались)??? Помогите пожалуйста!
 
Старый 17.09.2013, 10:04     # 2
Hubbitus
мод
IMHO Кодер-200(6,7,8)
 
Регистрация: 29.03.2003
Адрес: Saint-Petersburg, Russia
Пол: Male
Сообщения: 2 734

Hubbitus Бог с наворотамиHubbitus Бог с наворотами
Hubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотамиHubbitus Бог с наворотами
Думаю вам стоит задать просто другое имя файла в строке:
Код:
Result:= SaveDialog1.FileName + '.xls';
__________________
Я делаю Линукс! Присоединяйтесь к свободным людям!

Связаться со мной всегда можно по джабберу: Hubbitus@jabber.ru
Pahan-Hubbitus.
Hubbitus вне форума  
Старый 19.09.2013, 23:19     # 3
Borland
СуперМод
IMHO Консультант 2005-2009
 
Аватар для Borland
 
Регистрация: 14.08.2002
Адрес: Московская ПЛ, ракетный отс
Пол: Male
Сообщения: 14 488

Borland - Гад и сволочь
Цитата:
Сообщение от Hubbitus Посмотреть сообщение
задать просто другое имя файла в строке:
Это просто-напросто даст новый файл, с другим именем.

fcdk_pavel, мне думается, что нужно:
а) проверить файл на существование; если его до сих пор нет - создать, задать ширину колонок и заголовки столбцов.
б) если файл существовал ранее - прочитать, получить количество непустых строк (N) и писАть вводимые данные начиная с новой (N+1); если не существовал - и только что создан - со второй (первая - заголовок) строки.

Это только алгоритм, как это реализовать на Delfi (насколь я понимаю, Ваша программа именно на нём?) - не в курсе.
Offtop:
Последний раз программы писАл лет 10 назад, на C++ и без использования COM.


P.S. Можно ещё, из перфекционизма, при открытии уже существующего файла, спросить что с ним делать: дописать данные в конец или стереть и заменить новыми. Это, наверное, будет более правильно идеологически.
А вообще форму для заполнения таблички в M$ Excel обычно принято в самом же Excel и лепить.
Offtop №2:
Мне даже приходилось видеть целые БД, написанные в Excel; при сколь-нибудь заметном объёме данных работает изглючительно неторопливо, но ведь работает же... Концепт.
__________________
Не засоряйте форум "спасибами"! Для выражения благодарности существуют ПС и репутация! Соблюдайте Правила!
Распространенье наше по планете
Особенно заметно вдалеке:
В общественном парижском туалете
Есть надписи на русском языке

В. Высоцкий

Borland вне форума  
Старый 28.09.2013, 20:31     # 4
Alex Dark
КОТовский
 
Аватар для Alex Dark
 
Регистрация: 12.03.2003
Адрес: ОренБюргер
Пол: Male
Сообщения: 1 569

Alex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех ГуруAlex Dark Отец (мать) всех Гуру
Цитата:
Сообщение от Borland Посмотреть сообщение
А вообще форму для заполнения таблички в M$ Excel обычно принято в самом же Excel и лепить.
Поддерживаю.
Вместо того что бы городить огород с таблицами в дельфе, проще выгрузить данные просто в текстовик, по формату.
Далее из экселя грузишь файл макросом и раскидываешь так как тебе надо.

Я сам так делал не раз и не только в эксель, но и в 1с.
__________________
Все мы финансовые гении и эффективные менеджеры,
только не у всех одногруппник или сосед по даче - президент.

Последний раз редактировалось Alex Dark; 28.09.2013 в 20:33.
Alex Dark вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 16:32.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.