Добро пожаловать, гость
:: алгоритмы  и методы :: :: олимпиадные задачи :: :: связь :: :: о сайте :: :: форум ::

Форум работает в режиме архива, только для чтения и поиска.
Архив 2004 Архив 2007 Архив 2013

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.04.2009, 09:09
Новичок

Отправить личное сообщение для MiRiN Посмотреть профиль Найти все сообщения от MiRiN
 
Регистрация: 03.06.2008
Сообщений: 12

Excel в Delphi
Помогите до реализовать следующую задачку. Дело в том что необходимо сравнивать 2а файла с расширением .xls . Прикрепил два файла которые необходимо сравнивать... А сам код того что я наработал ниже...

[i]
unit Main;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls, Grids, OleServer, ExcelXP, Menus;
Const
lcid = LOCALE_SYSTEM_DEFAULT;
type
TMainForm = class(TForm)
GBPR: TGroupBox;
GBSAB: TGroupBox;
GBRESULT: TGroupBox;
StCheak: TStringGrid;
OpenDialog: TOpenDialog;
SaveDialog: TSaveDialog;
ExcelApplication: TExcelApplication;
ExcelWorksheet: TExcelWorksheet;
ExcelWorkbook: TExcelWorkbook;
StShap: TStringGrid;
StResult: TStringGrid;
MainMenu1: TMainMenu;
N1: TMenuItem;
BtnOpenProv: TMenuItem;
BtnOpenShap: TMenuItem;
BtnOpenSave: TMenuItem;
N5: TMenuItem;
BtnExit: TMenuItem;
N7: TMenuItem;
BtnProvRazl: TMenuItem;
BtnProvSovp: TMenuItem;
BtnExit2: TMenuItem;
N2: TMenuItem;
BtnNormal: TMenuItem;
Label1: TLabel;
procedure FormActivate(Sender: TObject);
procedure BtnExitClick(Sender: TObject);
procedure BtnExit2Click(Sender: TObject);
procedure BtnOpenProvClick(Sender: TObject);
procedure BtnOpenShapClick(Sender: TObject);
procedure BtnProvSovpClick(Sender: TObject);
procedure BtnNormalClick(Sender: TObject);
procedure BtnOpenSaveClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
MainForm: TMainForm;
MasBukv: string;
nameFile: string;
count1, count2 :integer;
implementation
Uses openfile;
{$R *.dfm}
//+++++++++++++++++++++++++++++++++Выход+++++++ +++++++++++++++++++++++++++++++++
procedure TMainForm.BtnExitClick(Sender: TObject);
begin
Close;
end;

procedure TMainForm.BtnExit2Click(Sender: TObject);
begin
Close;
end;
//+++++++++++++++++++++++++++++Запуск Формы+++++++++++++++++++++++++++++++++++++
procedure TMainForm.FormActivate(Sender: TObject);
begin
MasBukv:= 'ABCDEFGHIJKLMNOPQRSTVUWXYZ';
ExcelApplication.ConnectKind := ckNewInstance;
ExcelApplication.AutoConnect := true;
ExcelApplication.Visible[lcid]:=false;
end;
//+++++++++++++++++Отырытия первого файла+++++++++++++++++++++++++++++++++++++++
procedure TMainForm.BtnOpenProvClick(Sender: TObject);
var file_name:string;
i,j : integer;
index:string;
begin
OpenForm.Show;
if CountCol > 0
then begin
count1:= countCol;
OpenForm.Hide;
OpenDialog.Execute;
file_name := OpenDialog.FileName;

//подключение к документу
ExcelWorkbook.ConnectTo(ExcelApplication.Workbooks .Add(file_name,lcid));

StCheak.RowCount := CountCol;
for i:=1 to 13 do
for j:=1 to CountCol do
begin
StCheak.Cells[0,j] := inttostr(j);
stCheak.Cells[i,0] := MasBukv[i];
index := '';
index := stCheak.Cells[i,0] + inttostr(j);
StCheak.Cells[i,j]:= ExcelApplication.Range[index,EmptyParam].Value2;
end;
ExcelWorkbook.Disconnect;
end;
CountCol :=0;
end;
//++++++++++++++++++++++Открытие Второго файла++++++++++++++++++++++++++++++++++
procedure TMainForm.BtnOpenShapClick(Sender: TObject);
var file_name:string;
i,j : integer;
index:string;
begin
OpenForm.Show;
if CountCol > 0
then begin
count2:= countCol;
OpenForm.Hide;
OpenDialog.Execute;
file_name := OpenDialog.FileName;

//подключение к документу
ExcelWorkbook.ConnectTo(ExcelApplication.Workbooks .Add(file_name,lcid));

StShap.RowCount := CountCol;
for i:=1 to StShap.ColCount do
for j:=1 to StShap.RowCount do
begin
StShap.Cells[0,j] := inttostr(j);
StShap.Cells[i,0] := MasBukv[i];
index := '';
index := MasBukv+ inttostr(j);
StShap.Cells[i,j]:= ExcelApplication.Range[index,EmptyParam].Value2;
end;
ExcelWorkbook.Disconnect;
end;
CountCol := 0;
end;
//+++++++++++++++++++Проверка на совпадение++++++++++++++++++++++++++++++ +++++++
procedure TMainForm.BtnProvSovpClick(Sender: TObject);
var i,j: integer;
begin
for i:=1 to count1 do
for j := 1 to count2 do
begin
if (StCheak.Cells[4,i] = StShap.Cells[4,j])and (StCheak.Cells[1,i] = stShap.Cells[1,j]) then
begin
StResult.RowCount:= StResult.RowCount+1;
StResult.Cells[1,i] := StCheak.Cells[1,i];
StResult.Cells[2,i] := StCheak.Cells[4,i];
StResult.Cells[3,i] := StCheak.Cells[9,i];
StResult.Cells[4,i] := StCheak.Cells[10,i];
end;
end;
end;
//++++++++++++++++Проверка на различае++++++++++++++++++++++++++++++++++ ++++++++

//+++++++++++++++Сохранить файл++++++++++++++++++++++++++++++++++++++++++ +++++++
procedure TMainForm.BtnNormalClick(Sender: TObject);
var i : integer;
begin
For I:=1 to StResult.RowCount do
begin
if StResult.Cells[0,i] = ''
then begin
Stresult.Cells[0,i] := inttostr(i);
StResult.Cells[1,i] := StResult.Cells[1,i+1];
StResult.Cells[2,i] := StResult.Cells[2,i+1];
StResult.Cells[3,i] := StResult.Cells[3,i+1];
StResult.Cells[4,i] := StResult.Cells[4,i+1];
end;
end;
end;

procedure TMainForm.BtnOpenSaveClick(Sender: TObject);
var file_name:string;
i,j : integer;
begin
SaveDialog.Execute;
file_name := SaveDialog.FileName;
ExcelWorkbook.ConnectTo(ExcelApplication.Workbooks .Add(file_name,lcid));
for i:=1 to count1 do
for j:= 1 to count2 do
begin
ExcelApplication.Range['A'+inttostr(i),EmptyParam].Value2 := StResult.Cells[1,i];
ExcelApplication.Range['B'+inttostr(i),EmptyParam].Value2 := StResult.Cells[2,i];
ExcelApplication.Range['C'+inttostr(i),EmptyParam].Value2 := StResult.Cells[3,i];
ExcelApplication.Range['D'+inttostr(i),EmptyParam].Value2 := StResult.Cells[4,i];
end;
end;

end.
Вложения:
Тип файла: zip Анализ.zip (74.4 Кб, 200 просмотров)
 


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

Расширенный поиск
Опции просмотра


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
массивы в Delphi гость Вычислительная геометрия 0 31.03.2009 22:08
помогите, решение на C# или Delphi Man9 Реализация, исходники, языки 3 24.02.2009 12:15
Помогите с Delphi гость Реализация, исходники, языки 4 17.03.2008 23:35
Задача о перевозках на VBA под Excel The_David Реализация, исходники, языки 1 23.05.2007 19:54