OTOMASI EXCEL DENGAN DELPHI

    Pada artikel Mikrodata beberapa waktu yang lalu telah dibahas bagaimana cara melakukan otomasi Excel dengan menggunakan Visual Basic. Dalam artikel ini akan dibahas mengenai otomasi Excel dengan menggunakan Delphi. Walaupun saat ini sudah banyak komponen Excel di Delphi, toh tidak ada salahnya jika kita mengetahui bagaimana sich dasar otomasi Excel. Otomasi Excel berkaitan dengan otomasi OLE. Dengan memanfaatkan otomasi OLE banyak hal yang dapat kita lakukan dibandingkan dengan menjalankan aplikasi Excel itu sendiri . Untuk melakukan otomasi Excel kita harus menggunakan tipe data Variant. Tetapi sebelumnya kita harus lebih dulu mengetahui tentang OLE. OLE adalah singkatan dari Object Linking dan Embedding yaitu adanya fasilitas menggabungkan (link) dan melekatkan (embed) objek. Otomasi OLE memungkinkan sebuah aplikasi mengatur aplikasi lain. Aplikasi yang diatur disebut sebagai server automasi (automation server) sedangkan aplikasi yang mengatur disebut pengendali otomasi. Salah satu aplikasi yang mendukung otomasi OLE adalah Microsoft Office. Dalam artikel ini akan dibahas bagaimana melakukan Otomasi Excel menggunakan Borland Delphi.

Listing 1 : Fungsi untuk memanggil Excel :

Uses ComObj;
Var V : Variant;
procedure TForm1.Button1Click(Sender: TObject);
begin
    V := CreateOleObject('Excel.Application');
    V.Visible := True;
end;

Dari listing 1 di atas dapat dijelaskan sebagai berikut :
    Setelah mengeksekusi kode pada baris pertama maka Excel akan dijalankan pada background tetapi tidak kelihatan bagi user. Sehingga pada baris kedua property visible dari Excel.Application diset menjadi true sehingga segala kejadian pada Excel dapat terlihat. Dari kode diatas kita menggunakan Variant karena Variant mengijinkan kita untuk memanggil metode dan objek dari Excel dengan sintaks yang mudah. Pada listing program terlihat fungsi CreateOleObject (‘Excel.Application’) dimana Excel.Application merupakan pengenal aplikasi server untuk aplikasi Excel. Untuk melihat pengenal aplikasi untuk otomasi OLE dapat dilihat di Registry. Caranya jalankan Regedit.exe pada sebelah kiri klik HKEY_CLASSES_ROOT | Excel.Application | CLSID pada sebelah kanan akan terlihat pengenal aplikasi Excel.Application.
Agar dapat lebih memahami otomasi Excel kita harus mengenal hierarki objek otomasi Excel yang diantaranya dapat digambarkan sebagai berikut :
1. Excel Application
    A. WorkBook
        i. Sheets
        ii. WorkSheet
        iii. Chart
Objek WorkBooks mengandung kumpulan dari WorkSheet dan Chart. Worksheet adalah halaman standar dari spreadsheet, Chart merupakan grafik. Sedangkan Sheets adalah Worksheet atau Chart. Dengan menggunakan hierarki ini kita dapat mengakses suatu objek menggunakan objek lainnya karena suatu objek berkaitan dengan object lainnya.

Berikut ini adalah beberapa konstanta yang sering digunakan dalam Excel
const
{ XlSheetType }
xlChart = -4109;
xlDialogSheet = -4116;
xlExcel4IntlMacroSheet = 4;
xlExcel4MacroSheet = 3;
xlWorksheet = -4167;

{ XlWBATemplate }
xlWBATChart = -4109;
xlWBATExcel4IntlMacroSheet = 4;
xlWBATExcel4MacroSheet = 3;
xlWBATWorksheet = -4167;

{Others}
xl3DPie = -4102;
xlCenter = -4108;


Keterangan : Untuk konstanta lebih lengkapnya dapat anda download di http://community.borland.com/delphi/papers/microexcel/examples.zip

Listing 2 : Fungsi untuk menunjukkan hierarki objek Excel

procedure TForm1.Button2Click(Sender: TObject);
var i , j : integer;
begin
    V.Workbooks.Add;
    V.Workbooks[1].Sheets.Add(,,1,xlWorkSheet);
    V.Workbooks[1].Sheets.Add(,,1,xlChart);
    V.Workbooks.Add(xlWBatChart);
    V.Workbooks.Add(xlWBatWorkSheet);
    for i := 1 to V.Workbooks.Count do
    begin
        ListBox1.Items.Add('Workbook: ' + V.Workbooks[i].Name);
        for j := 1 to V.Workbooks[i].Sheets.Count do
            ListBox1.Items.Add(' Sheet: ' + V.Workbooks[i].Sheets[j].Name);
    end;
end;


Keterangan dari listing program di atas adalah sebagai berikut :
Pada baris pertama Workbooks mempunyai sebuah metode Add yang berguna untuk menambahkan Workbook ke kumpulan Workbooks. Dimana Workbook defaultnya adalah kumpulan Sheet. Pada baris 2 berfungsi untuk menambahkan 1 buah WorkSheet pada Workbook 1. Sedangkan baris 3 berfungsi untuk menambahkan 1 buah Chart pada Workbook 1. Metode Add pada Sheet mempunyai 4 parameter sebagai berikut :
Sheets.Add(Before,After,Count,Type)
Before : Bertipe variant yang mengandung urutan Sheet sebelum Sheet baru
ditambahkan
After : Bertipe variant yang mengandung urutan Sheet setelah Sheet baru
ditambahkan
Count : Jumlah Sheet yang ditambahkan defaultnya adalah 1
Type : merupakan konstanta yang sudah ditetapkan. Bisa berupa xlWorksheet,
xlChart, xlExcel4MacroSheet, or xlExcel4IntlMacroSheet. Nilai defaultnya
adalah xlWorksheet.
Contoh pemakaiannya adalah sebagai berikut dengan Sheets bertipe Variant :
Sheets := V.Workbooks[1].Sheets;
V.Sheets.Add(,Sheets.item[2],1,xlChart);

Pada baris keempat yaitu V.Workbooks.Add(xlWBatChart) dipakai untuk menambahkan 1 buah Workbook dengan tepat 1 Chart. Sedangkan baris kelima menambahkan 1 buah Workbook yang berisi 1 buah WorkSheet. Baris selanjutnya digunakan untuk menunjukkan hierarki dari object Excel dengan memperlihatkan jumlah WorkBook beserta namanya dan jumlah Sheet beserta namanya sebagai berikut :
1. WorkBook 1
    A. Sheet 4
    B. Chart 1
    C. Sheet 1
    D. Sheet 2
    E. Chart 3
2. WorkBook 2
    A. Chart 1
3 .WorkBook 3
    A. Sheet 1

Setelah kita paham hierarki objek dalam Excel selanjutnya adalah bagaimana cara untuk mengakses data dari Delphi ke Excel. Berikut ini adalah contohnya.

Listing 3 : Mengakses data dari Delphi ke Excel
procedure TForm1.Button3Click(Sender: TObject);
var Sheet : Variant;
i , j : integer;
begin
    V.Workbooks.Add(xlWBatWorkSheet);
    j := V.Workbooks.Count;
    V.Workbooks[ j ].WorkSheets[1].Name := 'Contoh 3';
    Sheet := V.Workbooks[ j ].WorkSheets['Contoh 3'];
    for i := 1 to 10 do
        Sheet.Cells[i, 1] := i;
end;

Inti dari listing program di atas adalah pada baris ke-6 yaitu Sheet.Cells[i,1] yang mengisikan data dari Cell A1 sampai dengan A10 dengan nilai yang berurutan. Sehingga jika kita ingin mengakses Cell B atau sel lainnya maka nilai 1 pada Sheet.Cells[i,1] yang perlu diganti.
Kadang – kadang kita juga perlu memindahkan data dari Excel ke Delphi yang bila dilakukan secara manual mungkin akan melelahkan. Padahal dengan Delphi kita dapat mengakses data dari Excel. Berikut ini adalah contoh sederhana mengakses data dari Excel ke Delphi.

Listing 4 : Mengakses data dari Excel ke Delphi
procedure TForm1.Button4Click(Sender: TObject);
var Sheet : Variant;
i , j : integer;
begin
    V.Workbooks.Add(xlWBatWorkSheet);
    j := V.Workbooks.Count;
    V.Workbooks[ j ].WorkSheets[1].Name := 'Contoh 4';
    Sheet := V.Workbooks[ j ].WorkSheets['Contoh 4'];
    for i := 1 to 10 do
    begin
        Sheet.Cells[i, 1] := i;
        StringGrid1.Cells[1,i] := Sheet.Cells[i, 1];
    end;
end;

Sedangkan berikut ini adalah bagaimana cara otomasi untuk membuat Chart dari Delphi.

Listing 5 : Menggunakan Chart

procedure TForm1.Button5Click(Sender: TObject);
var ARange,Sheet : Variant;
i , j : integer;

begin
    V.Workbooks.Add(xlWBatWorkSheet);
    j := V.Workbooks.Count;
    V.Workbooks[ j ].WorkSheets[1].Name := 'Contoh 5';
    Sheet := V.Workbooks[ j ].WorkSheets['Contoh 5'];
    for i := 1 to 10 do
    Sheet.Cells[i, 1] := i;
    V.Workbooks[j].Sheets.Add(,,1,xlChart);
    Sheets := V.Workbooks[j].Sheets;
    ARange := Sheets.Item['Contoh 5'].Range['A1:A10'];
    Sheets.Item['Chart1'].SeriesCollection.Item[1].Values := ARange;
    Sheets.Item['Chart1'].ChartType := xl3DPie;
end;
Inti dari procedure di atas ada pada 3 baris terakhir. ARange bertipe array 1 dimensi digunakan untuk menampung nilai data-data yang akan direpresentasikan. Setelah itu
Data-data tersebut dimasukkan pada chart values lalu ditentukan tipe Chartnya

Listing 6 : Menutup Excel
procedure TForm1.Button6Click(Sender: TObject);
begin
    if not VarIsEmpty(V) then
    V.Quit;
end;


[GAMBAR1.BMP]
Gambar 1 : Otomasi Excel Dasar

Contoh - contoh listing di atas adalah listing yang sederhana. Untuk mengetahui fungsi yang lainnya anda dapat membaca help dari Excel atau untuk mudahnya anda record sebuah macro lalu dilihat listingnya.Berikut ini adalah beberapa contoh fungsi Excel lain yang sering digunakan :
Merge Cell     V.Workbooks[1].WorkSheets['A'].Range['A1:B1'].Merge;
Ubah Font       V.Workbooks[1].WorkSheets['A'].Range['A1:B1'].Font.Color Index := 3;
                        V.Workbooks[1].WorkSheets['A'].Range['A1:B1'].Font.Bold := True;
Warna Background V.Workbooks[1].WorkSheets['A'].Range['A1:B1'].Columns.Interior.ColorIndex := 4;
Borders             V.Workbooks[1].WorkSheets['A'].Range['A1:B1'].Borders.LineStyle := 10;
                           V.Workbooks[1].WorkSheets['A'].Range['A1:B1'].Borders.Color := $FF00FF;
Mengubah Cell V.Workbooks[1].WorkSheets['’A’'].Columns.Columns[1].ColumnWidth := 5;
                           V.Workbooks[1].WorkSheets['’A’'].Columns.Columns[1].ColumnHeight := 5;
Atur Paragraph V.Workbooks[1].WorkSheets['A'].Range['A1:B1']..HorizontalAlignment := xlCenter;

Select                 V.Workbooks[1].WorkSheets['A'].Range['A1:B1'].Select;

[GAMBAR2.BMP]
Gambar 2 : Beberapa fungsi Excel yang sering digunakan

Sumber
http://community.borland.com/article/0,1410,10126,00.html
http://homepages.borland.com/ccalvert/index.htm
Pemrograman Borland Delphi , Antony Pranata


Nino Budi Santoso