[Delphi] Microsoft Excelのデータファイルを作成

// uses に "ComObj" を追加して下さい
// TButtonコンポーネントを2つと、TMemoコンポーネントをフォームに貼り付け

//======================================================================
//  機能:Microsoft Excelのデータファイルを作成
//======================================================================
procedure TfmMain.Button1Click(Sender: TObject);
var
        ExcelApp, WorkBook, WorkSheet: OleVariant;
        ii, jj, nn: integer;
        fname: string;
begin
    try
        ExcelApp := CreateOleObject('Excel.Application');
    except
        MessageDlg( 'Microsoft Excelがインストールされていません。',
                        mtError,[mbOk],0 );
        Exit;
    end;

    // WorkBookを新たに作成
    WorkBook := ExcelApp.Workbooks.Add;
    // WorkBookにWorkSheetを3枚作成
    while Workbook.sheets.count < 3 do begin
        Workbook.sheets.Add;
    end;
    // WorkSheet1をアクティブにする
    WorkSheet := WorkBook.WorkSheets[1];
    // WorkSheet1のシート名を変更
    WorkSheet.name := 'シート1';
    // WorkSheet1のセルに文字を入力
    nn := 0;
    for ii:=1 to 5 do begin         {Y軸(行)}
        for jj:=1 to 10 do begin    {X軸(列)}
            Worksheet.Cells.Item[ii,jj] := Chr($82)+Chr($A0+nn);
            Inc(nn);
        end;
    end;
    for jj:=1 to 10 do begin        {列の幅を自動調整}
        WorkSheet.Columns[jj].EntireColumn.AutoFit;
    end;

    // WorkSheet2をアクティブにする
    WorkSheet := WorkBook.WorkSheets[2];
    // WorkSheet2のシート名を変更
    WorkSheet.name := 'シート2';
    // WorkSheet2のセル"A1"に文字を入力
    WorkSheet.Cells[1,1] := 'xyz';

    // WorkSheet3をアクティブにする
    WorkSheet := WorkBook.WorkSheets[3];
    // WorkSheet3を削除
    WorkSheet.Delete;

    // Workbookに名前を付けて保存
    fname := ExtractFilePath(ParamStr(0))+'test.xls';
    WorkBook.SaveAs( fname );

    // 後処理
    WorkBook.Close;
    WorkBook  := unAssigned;
    WorkSheet := unAssigned;
    ExcelApp.Quit;
    ExcelApp  := unAssigned;

    ShowMessage(fname+'に出力しました');
end;


//======================================================================
//  機能:Microsoft Excelのデータファイルを読み込み
//======================================================================
procedure TfmMain.Button2Click(Sender: TObject);
var
        ExcelApp, WorkBook, WorkSheet, SheetName: OleVariant;
        iRow, iCol: Integer;
        Ctmp, ws, fname: string;
begin
    try
        ExcelApp := CreateOleObject('Excel.Application');
    except
        MessageDlg( 'Microsoft Excelがインストールされていません。',
                        mtError,[mbOk],0 );
        Exit;
    end;
    fname := ExtractFilePath(ParamStr(0))+'test.xls';
    WorkBook := ExcelApp.WorkBooks.Open(fname, False);
    Memo1.Clear;

    // 指定したワークシートの内容を読み込む
    SheetName := Workbook.Sheets[1];
    WorkSheet := WorkBook.WorkSheets[SheetName.Name];
    Memo1.Lines.Add( format('[%s]の内容',[SheetName.Name]) );
    for iRow:=1 to 5 do begin
        Ctmp := '';
        for iCol:=1 to 10 do begin
            ws := WorkSheet.Cells[iRow,iCol].Text;
            Ctmp := Ctmp + ws + ' ';
        end;
        Memo1.Lines.Add( Ctmp );
    end;
    Memo1.Lines.Add( '' );

    SheetName := Workbook.Sheets[2];
    WorkSheet := WorkBook.WorkSheets[SheetName.Name];
    Memo1.Lines.Add( format('[%s]の内容',[SheetName.Name]) );
    Ctmp := WorkSheet.Cells[1,1].Text;
    Memo1.Lines.Add( Ctmp );

    // 後処理
    WorkBook.Close;
    WorkBook  := unAssigned;
    WorkSheet := unAssigned;
    ExcelApp.Quit;
    ExcelApp  := unAssigned;
end;

      

・インターネット上の情報や書籍の内容を一部参考に作成してます。
・コーディング内容は著作権フリーですが、使用する場合は自己責任にてお願いします。
・記述内容に問題点や改善点がありましたらこちらまでお願いします。

サンプル集の一覧に戻る