|
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"TExcelApplicationでExcelファイルの作成"
TExcelApplication でExcelファイルを作成するサンプル
Windows2000, Excel2000 で動作を確認しています。
Excel97でも動作すると思います。
------------------------------------------------------
unit main;
interface
uses
Windows, SysUtils, Classes, Controls, Forms, StdCtrls,
Buttons, OleServer, Excel97;
type
TForm1 = class(TForm)
ExcelApplication1: TExcelApplication;
BitBtn1: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.BitBtn1Click(Sender: TObject);
var
x,y:integer;
V:Variant;
XLWB:ExcelWorkbook;
XLWS1:ExcelWorkSheet;
SFileName:OLEVariant;
NumNewSheets:Integer;
const
LCID : DWORD = LOCALE_SYSTEM_DEFAULT;
begin
//***********2次元バリアント配列V[y,x]の作成******************
V := VarArrayCreate([0,200, 0,4], varOLEStr);
VarArrayLock(V);
//************** バリアント配列に値の設定 ********************
for y:=0 to VarArrayHighBound(V,1) do
for x:=0 to VarArrayHighBound(V,2) do
begin
V[y,x]:='y='+InttoStr(y)+',x='+InttoStr(x);
end;
//*********** 新しいBookの作成 ****************
ExcelApplication1.Workbooks.Add(Emptyparam,LCID);
XLWB:=ExcelApplication1.ActiveWorkbook as ExcelWorkbook;
//(参考) 新規に作成されるシート数の参照
NumNewSheets:=ExcelApplication1.SheetsinNewWorkBook[LCID];
//*********** 表示 ************************
ExcelApplication1.Visible[LCID] := True;
//*********** シート1の前にシートを追加 ***********
ExcelAppliCation1.Sheets.Add(ExcelApplication1.Sheets[1], //Before
EmptyParam, //After
EmptyParam, //Count
EmptyParam, //Type
LCID); //lcid
//*********** 新規シートをアクティブに設定 ***********
//Sheets[Number]:Numberは表示されている順番で指定する
XLWS1:=ExcelApplication1.Sheets[1] as ExcelWorkSheet;
XLWS1.Activate(LCID);
//*********** 新規シートに名前を設定 *****************
XLWS1.Name:='新規シート';
//*********** バリアント配列を転送 ***********
with XLWS1 do
begin
Range['A1','A1'].Select;
Range['A1','E200'].Value:=V;
end;
VarArrayUnLock(V);
//************* 罫線 ***************
//中罫線(細線)
with XLWS1.Range['A1','E200'] do
begin
with Borders[xlInsideVertical] do
begin
LineStyle := xlContinuous;
Weight := xlThin;
ColorIndex:=xlAutomatic;
end;
with Borders[xlInsideHorizontal] do
begin
LineStyle := xlContinuous;
Weight := xlThin;
ColorIndex:=xlAutomatic;
end;
end;
//外罫線(太線)
with XLWS1.Range['A1','E200'] do
begin
BorderAround(
xlContinuous, //LineStyle
xlThick, //Weight
xlAutomatic, //ColorIndex
EmptyParam //Color
);
end;
//***************** 保存 ******************
//ファイル名の設定
SFileName:='C:\Test.XLS';
//無条件に上書きする目的で、同名のファイルを削除
if FileExists(SFileName) then DeleteFile(SFileName);
//保存
XLWB.SaveAs(SFileName, //Filename
xlNormal, //FileFormat
EmptyParam, //Password
EmptyParam, //WriteResPassword
False, //ReadOnlyRecommended
False, //CreateBackup
xlNoChange, //AccessMode
EmptyParam, //ConflictResolution
EmptyParam, //AddToMru
EmptyParam, //TextCodepage
EmptyParam, //TextVisualLayout
LCID); //LCID
//***************** Excelの終了 ******************
ExcelApplication1.Quit;
ExcelApplication1.Disconnect;
end;
end.
2000.6.5 きの(KFC00142)
Original document by きの 氏 ID:(KFC00142)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|