お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
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