unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, StdCtrls, Gauges,ComObj;
type
TForm1 = class(TForm)
Button1: TButton;
StringGrid1: TStringGrid;
Gauge1: TGauge;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
XL,WorkBook: Variant;
i : integer;
ArrV: OleVariant;
Row,Col : Integer;
begin
Screen.Cursor:= crHourGlass;
try
XL:= CreateOleObject('Excel.Application');
except
Application.MessageBox('ExcelÀÌ ¼³Ä¡µÇ¾î ÀÖÁö ¾Ê½À´Ï´Ù. ¸ÕÀú ExcelÀ» ¼³Ä¡Çϼ¼¿ä.',
'¿À·ù', MB_OK or MB_ICONERROR);
Screen .Cursor := crDefault;
Exit;
end;
Gauge1.MaxValue := StringGrid1.RowCount;
Gauge1.Progress := 1;
Application.ProcessMessages;
try
WorkBook := XL.WorkBooks.Add;
//Data import
ArrV := VarArrayCreate([0, StringGrid1.RowCount, 0, StringGrid1.ColCount], varOleStr);
I := 0;
for Row := 0 to StringGrid1.RowCount do
begin
for Col := 0 to StringGrid1.ColCount do
begin
Application.ProcessMessages;
ArrV[Row, Col] := StringGrid1.cells[Col, Row];
end;
Gauge1.Progress:= i;
Application.ProcessMessages;
Inc(I);
end;
XL.Range[XL.Cells[1, 1], XL.Cells[StringGrid1.RowCount, StringGrid1.ColCount]].Value := ArrV;
// XL.Selection.Columns.AutoFit;
XL.DisplayAlerts := False;
XL.Visible:= True;
finally
Application.ProcessMessages;
Screen .Cursor := crDefault;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
XL,WorkBook: Variant;
i, j : integer;
begin
Screen.Cursor:= crHourGlass;
try
XL:= CreateOleObject('Excel.Application');
except
Application.MessageBox('ExcelÀÌ ¼³Ä¡µÇ¾î ÀÖÁö ¾Ê½À´Ï´Ù. ¸ÕÀú ExcelÀ» ¼³Ä¡Çϼ¼¿ä.',
'¿À·ù', MB_OK or MB_ICONERROR);
Screen .Cursor := crDefault;
Exit;
end;
Gauge1.MaxValue := StringGrid1.RowCount;
Gauge1.Progress := 1;
Application.ProcessMessages;
try
WorkBook := XL.WorkBooks.Add;
//Data import
for i:= 0 to StringGrid1.RowCount do
begin
for j := 0 to StringGrid1.ColCount do
begin
Gauge1.Progress:= i;
Application.ProcessMessages;
XL.Cells[i+1, j+1].Value := StringGrid1.Cells[0, i];
end;
end;
// XL.Selection.Columns.AutoFit;
XL.DisplayAlerts := False;
XL.Visible:= True;
finally
Application.ProcessMessages;
Screen .Cursor := crDefault;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i,j,k : Integer;
begin
k := 1;
for i := 0 to StringGrid1.RowCount do
begin
for j := 0 to StringGrid1.ColCount do
begin
StringGrid1.cells[j,i] := IntToStr(k);
Inc(k);
end;
end;
end;
end.
|
|