Bagaimana untuk membuka helaian excel dari Delphi. Excel kepada Delphi. Kaedah objek Lembaran Kerja (lembaran)

DALAM ulasan ini Struktur asas yang membolehkan anda mengakses buku kerja Excel daripada DELPHI dibincangkan.

Mengatur akses kepada buku EXCEL

Untuk berinteraksi dengan MS excel dalam program anda mesti menggunakan modul ComObj
menggunakan ComObj;
dan mengisytiharkan pembolehubah untuk mengakses MS excel jenis berikut:
var Excel: Varian;

Dalam kes paling mudah, memulakan pembolehubah Excel boleh dilakukan seperti ini:
Excel:= CreateOleObject("Excel.Application");

Mencipta buku baharu:
Excel.Buku Kerja.Tambah;

Pembukaan buku sedia ada(di mana laluan adalah laluan ke fail dengan sambungan xls.):
Excel.Buku Kerja.Buka;

Untuk membuka buku kerja sedia ada untuk baca sahaja:
Excel.Buku Kerja.Buka;

Menutup Excel:
Excel.ActiveWorkbook.Close;
Excel.Application.Quit;

Menyekat permintaan Excel (pengesahan, pemberitahuan), contohnya, menyekat permintaan untuk menyimpan fail:
Excel.DisplayAlerts:=False;

Memaparkan Excel pada skrin:
Excel.Visible:= Benar;
atau sembunyikan:
Excel.Visible:= Salah;

Mencetak kandungan helaian excel aktif:
Excel.ActiveSheet.PrintOut;

Membaca/menulis data dalam EXCEL

Anda boleh mengakses sel dalam buku kerja Excel semasa seperti berikut:
Excel.Range["B2"]:="Hello!";- untuk menulis nilai pada sel atau
s:=Excel.Julat["B2"]; - untuk membaca,
di mana B2 ialah alamat sel.

Atau menggunakan gaya pautan R1C1:
Excel.Range]:="Hello!";, di manakah koordinat sel.

sama sekali, sel Excel Anda boleh menetapkan sebarang nilai (aksara, integer, pecahan, tarikh) dan Excel akan menetapkan pemformatan lalai dalam sel.

Formatkan sel dalam EXCEL

Anda boleh memilih (memilih) sekumpulan sel untuk kerja seterusnya seperti ini:
Excel.Range, Excel.Cells].Pilih;
atau
Excel.Julat["A1:C5"].Pilih;
dalam kes ini, kawasan yang terletak di antara sel A1 dan C5 akan dipilih.

Selepas membuat pemilihan, anda boleh menetapkan:
1) penggabungan sel
Excel.Selection.MergeCells:=Benar;
2) pembalut perkataan
Excel.Selection.WrapText:=Benar;
3) penjajaran mendatar
Excel.Selection.HorizontalAlignment:=3;
Apabila ditetapkan kepada 1, penjajaran lalai digunakan, apabila ditetapkan kepada 2, penjajaran di kiri, 3 di tengah dan 4 di kanan.
4) penjajaran menegak
Excel.Selection.VerticalAlignment:=1;
nilai yang diberikan adalah sama dengan penjajaran mendatar.
5) sempadan untuk sel

Apabila ditetapkan kepada 1, sempadan sel dilukis dengan garis pepejal nipis.
Di samping itu, anda boleh menentukan nilai untuk sifat Borders, contohnya, sama dengan 3. Kemudian hanya sempadan atas untuk blok pemilihan akan ditetapkan:
Excel.Selection.Borders.LineStyle:=1;
Nilai sifat Borders menentukan gabungan tepi sel yang berbeza.
Dalam kedua-dua kes, anda boleh menggunakan nilai dalam julat dari 1 hingga 10.

Menggunakan kata laluan dalam EXCEL

Menetapkan kata laluan untuk buku kerja aktif boleh dilakukan seperti berikut:
cubalah
// cuba untuk menetapkan kata laluan
Excel.ActiveWorkbook.protect("lulus");
kecuali
// tindakan jika percubaan untuk menetapkan kata laluan gagal
akhir;

di mana pas ialah kata laluan untuk ditetapkan untuk buku.

Mengalih keluar kata laluan daripada buku adalah serupa, gunakan arahan
Excel.ActiveWorkbook.Unprotect("lulus");

Menetapkan atau mengalih keluar kata laluan untuk helaian aktif Buku kerja Excel dihasilkan oleh pasukan
Excel.ActiveSheet.protect("lulus"); // tetapkan kata laluan
Excel.ActiveSheet.Unprotect("lulus"); // alih keluar kata laluan

di mana pas ialah kata laluan yang ditetapkan untuk melindungi buku.

Operasi tambahan dalam EXCEL

Mengalih keluar baris dengan anjakan ke atas:
Excel.Rows["5:15"].Pilih;
Excel.Selection.Delete;

Apabila melakukan tindakan ini, baris 5 hingga 15 akan dipadamkan.

Menetapkan kawasan untuk disematkan lembaran aktif Excel
// nyahbeku kawasan jika ia telah ditetapkan
Excel.ActiveWindow.FreezePanes:=False;
// pilih sel yang dikehendaki, V dalam kes ini D3
Excel.Julat["D3"].Pilih;
// tetapkan kawasan untuk dibekukan
Excel.ActiveWindow.FreezePanes:=Benar;

Semoga berjaya!

Semakan ini membincangkan binaan asas yang membolehkan anda mengakses buku kerja Excel daripada Delphi.

Mengatur akses kepada buku EXCEL

Untuk berinteraksi dengan MS Excel dalam program, anda mesti menggunakan modul ComObj dan mengisytiharkan pembolehubah untuk mengakses jenis varian MS Excel.

menggunakan ComObj;
var Excel: Varian;

Dalam kes paling mudah, anda boleh memulakan pembolehubah Excel seperti ini:

Excel:= CreateOleObject("Excel.Application");

Mencipta buku baharu:

Excel.Buku Kerja.Tambah;

Membuka buku sedia ada (di mana laluan ialah laluan ke fail dengan sambungan xls.):

Excel.Buku Kerja.Buka;

Untuk membuka buku kerja sedia ada untuk baca sahaja:

Excel.Buku Kerja.Buka;

Menutup Excel:

Excel.ActiveWorkbook.Close;
Excel.Application.Quit;

Menyekat permintaan Excel (pengesahan, pemberitahuan), contohnya, menyekat permintaan untuk menyimpan fail:

Excel.DisplayAlerts:=False;

Tunjukkan atau sembunyikan Excel pada skrin:

Excel.Visible:= Benar;
Excel.Visible:= Salah;

Mencetak kandungan lembaran kerja Excel yang aktif:

Excel.ActiveSheet.PrintOut;

Membaca/menulis data dalam EXCEL

Anda boleh mengakses sel dalam buku kerja Excel semasa seperti berikut:

Excel.Range["b2"]:="Hello!"; // tulis nilai pada sel
s:=Excel.Julat["b2"]; // membaca nilai dari sel

Di mana b2 ialah alamat sel.

Atau menggunakan gaya pautan R1C1:

Excel.Range]:="Hello!";

Di manakah koordinat sel.

Secara umum, anda boleh menetapkan sebarang nilai pada sel Excel (aksara, integer, pecahan, tarikh) dan Excel akan menetapkan pemformatan lalai dalam sel.

Formatkan sel dalam EXCEL

Anda boleh memilih (memilih) sekumpulan sel untuk kerja seterusnya seperti ini:

Excel.Range, Excel.Cells].Pilih;
// sama ada
Excel.Julat["A1:C5"].Pilih;

Dalam kes ini, kawasan yang terletak di antara sel A1 dan C5 akan dipilih.

Selepas membuat pemilihan, anda boleh menetapkan:
1) Menggabungkan sel:

Excel.Selection.MergeCells:=Benar;

2) Pembalut perkataan:

Excel.Selection.WrapText:=Benar;

3) Penjajaran mendatar:

Excel.Selection.HorizontalAlignment:=3;

Apabila ditetapkan kepada 1, penjajaran lalai digunakan, apabila ditetapkan kepada 2, penjajaran di kiri, 3 di tengah dan 4 di kanan. 4) Penjajaran menegak

Excel.Selection.VerticalAlignment:=1;

Nilai yang diberikan adalah sama dengan penjajaran mendatar.
5) Sempadan untuk sel:

Apabila ditetapkan kepada 1, sempadan sel dilukis dengan garis pepejal nipis.
Di samping itu, anda boleh menentukan nilai untuk sifat Borders, contohnya, sama dengan 3. Kemudian hanya sempadan atas untuk blok pemilihan akan ditetapkan:

Excel.Selection.Borders.LineStyle:=1;

Nilai sifat Borders ditentukan kombinasi berbeza tepi sel.
Dalam kedua-dua kes, anda boleh menggunakan nilai dalam julat dari 1 hingga 10.

Menggunakan kata laluan dalam EXCEL

Menetapkan kata laluan untuk buku kerja aktif boleh dilakukan seperti berikut:

cubalah
// cuba untuk menetapkan kata laluan
Excel.ActiveWorkbook.protect("lulus");
kecuali
// tindakan jika percubaan untuk menetapkan kata laluan gagal
akhir;

Di mana pas ialah kata laluan untuk ditetapkan untuk buku.

Mengalih keluar kata laluan daripada buku adalah serupa, gunakan arahan

Excel.ActiveWorkbook.Unprotect("lulus");

Menetapkan dan mengalih keluar kata laluan untuk helaian aktif buku kerja Excel dilakukan menggunakan arahan

Excel.ActiveSheet.protect("lulus"); // tetapkan kata laluan
Excel.ActiveSheet.Unprotect("lulus"); // alih keluar kata laluan

Di mana pas ialah kata laluan yang ditetapkan untuk melindungi buku.

Operasi tambahan dalam EXCEL

Memadamkan baris dengan anjakan ke atas (apabila melakukan tindakan ini, baris 5 hingga 15 akan dipadamkan):

Excel.Rows["5:15"].Pilih;
Excel.Selection.Delete;

Untuk menetapkan kawasan beku pada lembaran kerja Excel yang aktif:

// nyahbeku kawasan jika ia telah ditetapkan
Excel.ActiveWindow.FreezePanes:=False;
// pilih sel yang dikehendaki, dalam kes ini D3
Excel.Julat["D3"].Pilih;
// tetapkan kawasan untuk dibekukan
Excel.ActiveWindow.FreezePanes:=Benar;


Bekerja dengan EXCEL dari Delphi

Dalam artikel ini saya akan menunjukkan kepada anda cara bekerja dengannya MS Excel daripada Delphi. Artikel ini mungkin berguna kepada orang yang ingin belajar cara mencipta pelbagai Laporan Excel daripada program yang ditulis dalam Delphi. Artikel mengandungi data rujukan yang diperlukan untuk bekerja dengan MS Excel. Di sini anda akan mendapat maklumat tentang cara:

Sambung dan putuskan sambungan antara muka Excel dengan betul;
- Cara menukar saiz, warna dan jenis fon;
- Bagaimana untuk memilih, menggabungkan, mengisi dan membiak julat sel;
- Cara memutar dan memusatkan teks;
- Cara melukis sempadan sel;
- Bagaimana untuk memasukkan formula ke dalam sel dan banyak lagi...

Jadi, mari kita mulakan...

Kami akan bekerja melalui modul ComObj, untuk ini dalam kegunaan perlu tambah modul ComObj dan modul Excel_TLB(Untuk MS Excel 2007).

Kegunaan……, ComObj, Excel_TLB;

Modul Excel_TLB mengandungi yang perlu pemalar untuk bekerja dengan Excel, anda tidak perlu menyambungkannya, tetapi kemudian anda perlu memasukkan nilai semua pemalar yang digunakan secara manual daripada modul ini. Nilai pemalar boleh didapati di dalam modul atau di Internet, tetapi untuk versi berbeza MS Excel mereka berbeza.
Perhatian!!! Modul Excel_TLB dalam versi lain MS Excel boleh dipanggil berbeza. Sebelum menyambung modul Excel_TLB, anda perlu mengimport perpustakaan Excel. Untuk melakukan ini, pilih Komponen->Import Komponen->Import Jenis Perpustakaan-> kita dapati MS Excel dan ikut arahan.

Dalam bahagian perihalan pembolehubah kita perlu menerangkan pembolehubah jenis Pelbagai atau OleVariant untuk menyambung antara muka Excel. Saya menerangkan pembolehubah cemerlang.

Borang1: TForm1;
cemerlang : pelbagai;// Pembolehubah di mana objek dicipta EXCEL

Mencipta dokumen

Perhatian!!! Setiap kali anda membuat objek antara muka, bungkus prosedur penciptaan dalam modul pengendalian ralat:
cubalah
buat antara muka;
menjana laporan;
lepaskan antara muka;
Kecuali
mengendalikan kesilapan;
lepaskan antara muka;
akhir;

cubalah
// buat objek EXCEL

// Supaya tidak bertanya soalan tentang menyimpan dokumen
excel.DisplayAlerts:= palsu;

// buat dokumen baharu buku kerja
excel.WorkBooks.Add;

//atau muatkannya daripada direktori program
excel.WorkBooks.Open(GetCurrentDir() + "\report.xls");

( GetCurrentDir() - mengembalikan laluan ke direktori dengan program)

// Jadikan ia kelihatan fungsi ini selepas penyahpepijatan dan ujian, lebih baik menggunakannya pada penghujungnya, selepas menjana laporan (ini mempercepatkan proses mengeluarkan data kepada laporan)
excel.Visible:= benar;

//tetapkan jenis formula dalam format R1C1
excel.Application.ReferenceStyle:= xlR1C1;

// tetapkan jenis formula dalam format A1
excel.Application.ReferenceStyle:= xlA1;

// Tetapkan nama helaian pertama dan kedua
excel.WorkBooks.WorkSheets.Name:= "Laporan1";
excel.WorkBooks.WorkSheets.Name:= "Laporan2";

//tetapkan format nombor untuk format nombor lajur pertama dan keempat
excel.WorkBooks.WorkSheets.Columns.NumberFormat:= "0.00";
excel.WorkBooks.WorkSheets.Columns.NumberFormat:= "0.0";

// tetapkan lebar lajur pertama dan kedua
excel.WorkBooks.WorkHelaian.Lajur.Lebar Lajur:= 10;
excel.WorkBooks.WorkHelaian.Lajur.Lebar Lajur:= 20;

// tetapkan gaya, warna, saiz dan jenis fon untuk baris pertama
excel.WorkBooks.WorkSheets.Rows.Font.Bold:= Benar; //berlemak
excel.WorkBooks.WorkSheets.Rows.Font.Color:= clRed; // warna merah
excel.WorkBooks.WorkHelaian.Rows.Font.Saiz:= 12; //saiz 12
excel.WorkBooks.Worksheets.Rows.Font.Name:= "Times New Roman"; //font

//tetapkan nilai sel 1.4 dan 2.4 (1 - baris, 4 - lajur)
excel.WorkBooks.WorkSheets.Cells := "Dan dengan cara ini anda boleh memasukkan nilai ke dalam sel";
excel.WorkBooks.WorkSheets.Cells := "Dan dengan cara ini anda boleh memasukkan nilai ke dalam sel";

//masukkan formula "=b5+c4" ke dalam sel "A12"
excel.WorkBooks.WorkHelaian.Julat["A12"].Formula:="=b5+c4";

// Jajarkan baris pertama ke tengah secara menegak
excel.WorkBooks.WorkSheets.Rows.VerticalAlignment:= xlCenter;

// Jajarkan baris pertama secara mendatar ke tengah
excel.WorkBooks.WorkSheets.Rows.HorizontalAlignment:= xlCenter;

// Jajarkan sel ke kiri
excel.WorkBooks.WorkSheets.Cells.HorizontalAlignment:= xlKiri;

// Jajarkan sel ke kanan
excel.WorkBooks.WorkSheets.Cells.HorizontalAlignment:= xlRight;

// Gabungkan sel "A1:A8"
excel.WorkBooks.WorkHelaian.Julat["A1:A8"].Gabung;

// Putar perkataan pada sudut 90 darjah untuk baris kedua
excel.WorkBooks.WorkHelaian.Rows.Orientasi:= 90;

// Putar perkataan pada sudut 45 darjah untuk julat sel "B3:D3"
excel.Buku Kerja.Helaian Kerja.Julat["B3:D3"].Orientasi:= 45;

//lukis sempadan julat yang dipilih ke kiri
excel.Selection.Borders.LineStyle:= xlBerterusan; // gaya garisan padat
excel.Selection.Borders.Weight:= xlMedium;// ketebalan garisan

//lukiskan sempadan julat yang dipilih di atas

excel.Selection.Borders.Weight:= xlSederhana;

//lukiskan sempadan julat yang dipilih lebih rendah

excel.Selection.Borders.Weight:= xlSederhana;

//lukiskan sempadan julat yang dipilih ke kanan

excel.Selection.Borders.Weight:= xlSederhana;

//lukis sempadan julat yang dipilih secara menegak di dalam

excel.Selection.Borders.Weight:= xlSederhana;

//lukis sempadan julat yang dipilih secara mendatar di dalam

excel.Selection.Borders.Weight:= xlSederhana;

//autoisi julat yang dipilih
//contohnya, isikan kawasan sel "A10:C10" dengan perkataan "hello"
//dan darabkannya dengan lima sel lagi "A10:C15"

excel.WorkBooks.WorkHelaian.Julat["A10:C10"].Nilai:="hello";

//pilih julat sel "A10:C10"
excel.WorkBooks.WorkHeets.Julat["A10:C10"].Pilih;

//autofill (salin) kawasan sel "A10:C15" dengan julat yang dipilih
excel.selection.autofill(excel.WorkBooks.WorkSheets.Julat["A10:C15"],xlFillDefault);

//lumpuhkan amaran supaya tidak bertanya soalan tentang menyimpan dan lain-lain
excel.DisplayAlerts:= Salah;

//simpan dokumen ke Format Excel 97-2003
excel.ActiveWorkBook.Saveas(GetCurrentDir() + "\report.xls",xlExcel8);

//simpan dokumen dalam format Excel 2007 semasa
excel.ActiveWorkBook.Saveas(GetCurrentDir() + "\report.xlsx");

//tutup semua buku
excel.Buku kerja.Tutup;

//tutup Excel
excel.Application.quit;

// bebaskan antara muka
excel:= Tidak ditugaskan;

//mengendalikan ralat

//tutup semua buku
excel.Buku kerja.Tutup;

//tutup Excel
excel.Application.quit;

// bebaskan antara muka
excel:= Tidak ditugaskan;
akhir;
akhir;

Apabila bekerja dengan Helaian Excel kita boleh menggunakan pilihan berikut:
- bekerja dengan kawasan Julat["B3:D3"];
- bekerja dengan sel Sel di mana 2 adalah baris, 4 adalah lajur;
- bekerja dengan baris Rows atau julat baris Rows["1:5"];
- bekerja dengan lajur Lajur atau julat lajur Lajur["A:I"];

Julat["A1"] dan Sel bermaksud perkara yang sama.

Selepas dokumen dijana atau ralat berlaku, anda mesti melepaskan antara muka dengan betul.
Lain bila tutup Excel ia hilang dari skrin, tetapi jika anda membuka pengurus tugas ia terus tergantung di sana dan jika proses ini tidak selesai, maka dengan setiap permulaan baru mereka akan terkumpul lebih dan lebih sehingga komputer mula membeku. Oleh itu, adalah penting untuk melepaskan semua antara muka yang dikaitkan dengan Excel dengan buku dan helaiannya.

Contohnya seperti ini:
//tutup semua buku
excel.Buku kerja.Tutup;

//tutup Excel
excel.Application.quit;

// bebaskan antara muka
helaian:=Tidak ditugaskan; // antara muka lembaran jika ia dicipta
Buku Kerja:= Tidak ditetapkan; // antara muka buku kerja jika ia telah dibuat
excel:= Unassigned; // antara muka cadangan itu sendiri jika ia dicipta

Di bawah adalah contoh output dalam Excel daripada Delphi jadual pendaraban dengan ulasan terperinci.

Unit Unit1;

Kegunaan
Windows, Mesej, SysUtils, Varian, Kelas, Grafik, Kawalan, Borang,
Dialog, comobj, StdCtrls, Excel_TLB;

taip
TForm1 = kelas(TForm)
Butang1: TButton;
prosedur Button1Click(Penghantar: TObject);
persendirian
(Pengisytiharan peribadi)
awam
(Pengisytiharan awam)
akhir;

Var
Borang1: TForm1;
excel: variant; // Pembolehubah di mana objek EXCEL dicipta
MyData: variant; // Pembolehubah di mana jadual pendaraban dibentuk
i,j:integer;
pelaksanaan

Prosedur TForm1.Button1Click(Penghantar: TObject);
bermula
cubalah
// Objek EXCEL
excel:= CreateOleObject("Excel.Application");
// Supaya tidak bertanya soalan tentang menyimpan dokumen
excel.DisplayAlerts:= palsu;
// dokumen baharu
excel.WorkBooks.Add;

//mengisytiharkan tatasusunan varian
MyData:= VarArrayCreate(,varVariant);
untuk saya:= 1 hingga 9 lakukan
untuk J:= 1 hingga 9 lakukan
MyData:=i*j;

// Gabungkan sel "A1:I1"
excel.WorkBooks.WorkSheets.Julat["A1:I1"].Gabung;
//Tulis tajuk
excel.WorkBooks.WorkSheets.Julat["A1"].Nilai:="Jadual pendaraban";
// Sejajarkan tajuk ke tengah
excel.WorkBooks.WorkSheets.Julat["A1"].Penjajaran Mendatar:= xlCenter;
// tetapkan lebar lajur A kepada I
excel.WorkBooks.WorkHelaian.Lajur["A:I"].Lebar Lajur:= 3;

//pilih kawasan jadual pendaraban ["A2:I10"] dan lukis sempadan
excel.WorkBooks.WorkHelaian.Julat["A2:I10"].pilih;
//lukis sempadan julat yang dipilih ke kiri
excel.Selection.Borders.LineStyle:= xlBerterusan; // gaya garis adalah padat
excel.Selection.Borders.Weight:= xlNipis; // ketebalan garisan
//lukiskan sempadan julat yang dipilih di atas
excel.Selection.Borders.LineStyle:= xlBerterusan;
excel.Selection.Borders.Weight:= xlNipis;
//lukiskan sempadan julat yang dipilih lebih rendah
excel.Selection.Borders.LineStyle:= xlBerterusan;
excel.Selection.Borders.Weight:= xlNipis;
//lukiskan sempadan julat yang dipilih ke kanan
excel.Selection.Borders.LineStyle:= xlBerterusan;
excel.Selection.Borders.Weight:= xlNipis;
//lukis sempadan julat yang dipilih secara menegak di dalam
excel.Selection.Borders.LineStyle:= xlBerterusan;
excel.Selection.Borders.Weight:= xlNipis;
//lukis sempadan julat yang dipilih secara mendatar di dalam
excel.Selection.Borders.LineStyle:= xlBerterusan;
excel.Selection.Borders.Weight:= xlNipis;

//tetapkan julat ["A2:I10"] kepada nilai tatasusunan varian MyData, ini mempercepatkan kerja dengan ketara daripada output //secara sel

Excel.WorkBooks.WorkHelaian.Julat["A2:I10"].Nilai:=Data Saya;

// Jadikan ia kelihatan
excel.Visible:= benar;
// bebaskan antara muka
MyData:= Tidak ditugaskan;
excel:= Tidak ditugaskan;
Kecuali
showmessage("Perhatian! Ralat berlaku semasa membuat aplikasi MS Excel");
//tutup Excel
excel.Application.quit;
// bebaskan antara muka
MyData:= Tidak ditugaskan;
excel:= Tidak ditugaskan;
akhir;
akhir;

Semasa menulis artikel ini, bahan dari tapak telah digunakan

Anda boleh berhenti pada setiap peringkat model ini dan mengkajinya selama berbulan-bulan. Sekiranya terdapat keperluan khusus untuk mengkaji apa-apa sifat dan kaedah tambahan, kami pasti akan kembali dan mengkaji. Sekarang, mari kita mula bekerja di Delphi dengan helaian buku kerja.

2. Bagaimana untuk mengaktifkan helaian buku kerja Excel?

Seperti yang anda ketahui semasa membuat buku kerja kosong Excel secara automatik menambah 3 pada buku ini lembaran kosong. Untuk bekerja dengan helaian tertentu ( Lembaran Kerja atau secara ringkas Lembaran) helaian ini mesti diaktifkan. Satu cara untuk mengaktifkan helaian buku kerja Excel V Delphi seperti berikut:

string sumber rsEInvalidSheetIndex = "Indeks tidak sah ditentukan untuk Buku Kerja. Pengaktifan helaian dibatalkan"; rsEInvalidSheetActivate = "Pengaktifan helaian selesai dengan ralat"; function ActivateSheet(WBIndex: integer ; SheetName: string ) : boolean ; var i: integer ; mulakan Keputusan : = false ; jika WBIndex › MyExcel. Buku Kerja. Kira kemudian naikkan Exception. Cipta (rsEInvalidSheetIndex) ; cuba untuk i : = 1 kepada MyExcel. Buku Kerja [WBIindex]. Lembaran. Kira lakukan jika AnsiLowerCase (MyExcel. WorkBooks [ WBIndex]. Helaian . Item [ i]. Nama ) = AnsiLowerCase (SheetName) kemudian mulakan MyExcel. Buku Kerja [WBIindex]. Lembaran. Perkara [i]. Aktifkan ; Keputusan: = benar; pecah; akhir ; kecuali menaikkan Exception. Cipta (rsEInvalidSheetActivate) ; akhir ; akhir ;

Di sini, parameter fungsi ditetapkan kepada indeks buku kerja (WBIndex) dalam koleksi Buku Kerja dan nama helaian.

Jika anda mahu, anda boleh mengaktifkan helaian yang sama mengikut indeks dalam koleksi Lembaran Kerja- pada masa yang sama, fungsi itu sendiri dipermudahkan sedikit (syarat untuk menyemak nama helaian tidak diperlukan).

Juga, jika anda pasti itu masa ini Memandangkan buku kerja yang anda perlukan aktif, anda boleh mengelak daripada menggunakan pembolehubah tambahan (indeks buku kerja WBIndex) dan mengaktifkan helaian seperti ini:

MyExcel. ActiveWorkBook. Lembaran. Perkara [i]. Aktifkan ;

Sekarang mari kita lihat dengan lebih dekat kaedah yang digunakan oleh objek Lembaran Kerja.

3. Kaedah Lembaran Kerja Excel

Sekarang mari kita lihat objek dengan lebih terperinci Lembaran Kerja.

Rajah menunjukkan kaedah yang pernah saya gunakan dalam kerja saya.

Jumlah objek Lembaran Kerja jumlah 30 kaedah berbeza yang boleh anda gunakan.

Kaedah Penerangan
Aktifkan Menjadikan helaian semasa aktif. Kami telah membincangkan bagaimana kaedah itu berfungsi.
mengira segala-galanya buka buku, helaian tertentu dalam buku, atau julat yang ditentukan sel pada helaian
semak ejaan pada helaian yang dipilih
menyimpan semua perubahan pada fail
memadam helaian semasa Lembaran Kerja
pemilihan helaian
menyalin helaian ke lokasi lain dalam buku kerja
menampal kandungan papan keratan ke dalam lembaran kerja
mengembalikan objek yang mewakili sama ada satu rajah (objek ChartObject ChartObjects) pada helaian
menggerakkan helaian. Kaedah ini serupa dengan kaedah Salinan. Satu-satunya perbezaan ialah selepas menampal, helaian yang disalin dipadamkan daripada buku

Sekarang mari kita pertimbangkan setiap kaedah yang dibentangkan di atas.

Di bawah, sebagai ungkapan helaian harus menonjol ( Lembaran Kerja), melainkan dinyatakan sebaliknya.

Kaedah pengiraan

Kira buku kerja, helaian atau julat sel.

Perlu diingat bahawa kaedah panggilan Kira boleh dilakukan bukan sahaja untuk lembaran kerja tertentu dalam buku kerja Excel. Mari lihat pilihan untuk memanggil kaedah Kira.

var MyExcel: OleVariant; MyExcel. Kira

coretan kod di bawah mengira helaian aktif

MyExcel. ActiveWorkBook. ActiveWorkSheet. Kira

Mari kita hitung semua formula dalam lajur A, B dan C:

MyExcel. ActiveWorkBook. ActiveWorkSheet. UsedRange. Lajur("A:C"). Kira

Kaedah SemakEjaan

Panggilan kaedah kelihatan seperti ini:

ungkapan. Semak Ejaan(Kamus Tersuai, Abaikan Huruf Besar, SentiasaCadangkan, SpellLang)

Pada masa yang sama, sebagai ungkapan helaian harus menonjol ( Lembaran Kerja).

Parameter taip Penerangan
Kamus Tersuai Pelbagai Dengan rentetan yang menyatakan nama fail kamus pengguna yang akan dipertimbangkan jika perkataan itu tidak ditemui dalam kamus utama. Jika hujah ini ditinggalkan, kamus lalai akan digunakan
Abaikan Huruf Besar Pelbagai betul, jika perlu, supaya Microsoft Excel melangkau perkataan yang ditulis dengan huruf besar. Salah untuk Microsoft Excel semak semua perkataan. Jika hujah ini ditinggalkan, maka tetapan semasa Excel.
SentiasaCadangkan Pelbagai betul, untuk Microsoft Excel memaparkan senarai cadangan untuk ejaan lain apabila perkataan yang dieja dengan salah telah dikesan. Salah, kepada Microsoft Excel sedang menunggu input ejaan yang betul. Jika hujah ini ditinggalkan, tetapan semasa digunakan.
SpellLang Pelbagai bahasa kamus. Boleh mengambil nilai salah satu pemalar MsoLanguageID , contohnya untuk bahasa Rusia SpellLang = 1049, untuk bahasa Inggeris (AS) SpellLang = 1033 dan lain-lain. Butiran lanjut tentang pengecam bahasa.

Bagaimana untuk menyemak tatabahasa pada helaian Excel dalam Delphi?

MyExcel. ActiveWorkBook. ActiveWorkSheet. CheckSpelling(CustomDictionary:=EmptyParam, IgnoreUppercase:=false, AlwaysSuggest:=EmptyParam, SpellLang:=1033)

dalam kes ini MS Excel akan menyemak helaian semasa, termasuk menyemak perkataan daripada huruf besar. Bahasa pengesahan adalah bahasa Rusia. Sila ambil perhatian bahawa untuk memanggil kaedah, kami secara eksplisit menyatakan parameter mana yang hendak diberikan nilai mana. Selain itu, untuk melangkau sebarang parameter, kami menggunakan EmptyParam(parameter kosong), iaitu dalam Delphi ialah pembolehubah jenis OleVariant.

Adalah jelas bahawa kaedah kaedah panggilan ini (dengan petunjuk jelas semua parameter) tidak sepenuhnya sesuai untuk anda dan tidak diamalkan secara meluas dalam pengaturcaraan dalam bahasa Inggeris. Delphi , tetapi bagaimanapun, ini adalah satu-satunya cara dan tiada cara lain untuk memanggil kaedah yang digunakan dalam Excel .

Kaedah SaveAs

Menyimpan lembaran kerja Excel.

Panggilan kaedah:

expression.SaveAs(FileName, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AddToMru, TextCodepage, TextVisualLayout, Local)
Parameter taip Penerangan
Nama fail Pelbagai rentetan yang mewakili nama fail yang akan disimpan. Mesti dinyatakan laluan penuh ke fail, jika tidak fail akan disimpan ke folder Excel .
Format fail Pelbagai Format fail yang digunakan semasa menyimpan. Secara lalai, fail disimpan dalam format yang anda pilih kali terakhir V Excel.
Kata laluan Pelbagai kata laluan untuk fail (tidak lebih daripada 15 aksara). Kata laluan adalah sensitif huruf besar-besaran.
WriteResPassword Pelbagai kata laluan yang akan digunakan untuk membuat perubahan pada buku kerja. Jika kata laluan tidak dinyatakan, buku akan dibuka dalam mod Baca Sahaja.
ReadOnlyRecommended Pelbagai jika parameter adalah sama betul, kemudian apabila membuka fail, mesej akan muncul pada paparan yang mengesyorkan agar fail dibuka untuk baca sahaja.
CreateBackup Pelbagai betul, untuk mencipta fail sandaran
AddToMru Pelbagai betul, untuk menambah nama fail yang disimpan pada senarai baru-baru ini buka fail dalam menu utama Excel
TextCodepage Dan TextVisualLayout Pelbagai tidak digunakan pada masa ini dan dikekalkan untuk keserasian ke belakang
Tempatan Pelbagai tidak parameter yang diperlukan, secara lalai adalah sama dengan Salah.Maknanya betul- menyimpan fail daripada bahasa Microsoft Excel (termasuk tetapan panel kawalan).

MyExcel.ActiveWorkBook.ActiveWorkSheet.SaveAs("C\:MyExcelFile.xls")

Dalam kes ini, tetapan lalai akan digunakan semasa menyimpan.

Jika anda perlu berjimat Fail Excel dalam format yang berbeza, kemudian dalam parameter Format fail anda boleh menggunakan salah satu nilai enumerator xlFileFormat . Beberapa makna xlFileFormat dibentangkan dalam jadual di bawah:

Nama Maknanya Penerangan Sambungan fail
xlCSV6 CSV*.csv
xlExcel856 Buku kerja Excel 97-2003*.xls
xlHtml44 format HTML*.htm; *.HTML
xlOpenDocumentSpreadsheet60 Hamparan OpenDocument*.ods
xlOpenXMLWorkbook51 Buka Buku XML*.xlsx

Mari tulis prosedur kecil yang membolehkan anda menyimpan helaian Excel dalam pelbagai format:

const xlCSV = 6 ; xlExcel8 = 56 ; xlHtml = 44 ; xlOpenDocumentSpreadsheet = 60 ; xlOpenXMLWorkbook = 51 ; resourcestring rsESaveActiveSheet = "Ralat menyimpan lembaran kerja aktif"; prosedur SaveAs(const AFileName: TFileName; AFileFormat: integer ); mula mencuba MyExcel. ActiveWorkBook. ActiveSheet. SaveAs(AFileName, AFileFormat); kecuali menaikkan Exception. Cipta(rsESaveActiveSheet); akhir ; akhir ;

Padam kaedah

Padamkan lembaran kerja Excel.

MyExcel.ActiveWorkBook.WorkSheets.Item.Select

Memilih helaian ketiga buku kerja

Kaedah salin

Salin helaian ke lokasi lain dalam buku kerja.

Panggilan kaedah:

ungkapan.Salin(Sebelum, Selepas)

Walau bagaimanapun, jika anda menggunakan parameter Sebelum ini, maka anda tidak sepatutnya menggunakan Selepas dan begitu juga sebaliknya. Biar saya menarik perhatian anda kepada fakta bahawa HELAIAN yang ditunjukkan, dan bukan indeks helaian.

Bagaimana untuk menyalin helaian Excel ke Delphi?

MyExcel.ActiveWorkBook.WorkSheets.Item.Copy(Selepas:=MyExcel.ActiveWorkBook.WorkSheets.Item)

Dalam kes ini, helaian pertama akan disalin dan ditampal selepas helaian ketiga.

Kaedah tampal

Tampalkan kandungan papan keratan ke dalam helaian Excel.

Panggilan kaedah:

ekspresi.Tampal(Destinasi, Pautan)

Bagaimana untuk menampal kandungan papan keratan ke dalam helaian Excel dalam Delphi?

MyExcel.ActiveWorkBook.ActiveSheet.Paste(Destinasi:=MyExcel.ActiveWorkBook.ActiveSheet.Range("D1:D5"))

Dalam kes ini, kandungan penimbal akan dimasukkan ke dalam lajur D dalam baris 1 hingga 5. Perlu diingatkan bahawa jika kandungan penimbal tidak memenuhi syarat, contohnya, terdapat hanya 1 nombor dalam penimbal, kemudian situasi yang luar biasa.

Kaedah ChartObjects

Mengembalikan objek yang mewakili sama ada satu rajah (objek ChartObject) atau koleksi semua gambar rajah (objek ChartObjects) pada helaian.

Panggilan kaedah:

ungkapan.ChartObjects

Bagaimana untuk mendapatkan carta dalam helaian Excel dalam Delphi?

MyExcel.ActiveWorkBook.ActiveSheet.ChartObjects

Dalam kes ini, yang pertama akan diterima.

Kaedah pindah

Menggerakkan helaian. Kaedah ini serupa dengan . Satu-satunya perbezaan ialah selepas menampal, helaian yang disalin dipadamkan daripada buku.

Berikut adalah sebahagian daripada kaedah yang pernah saya gunakan semasa bekerja Excel V Delphi . Secara umumnya boleh dikatakan bahawa dalam Delphi boleh dikawal MS Excel tidak lebih buruk daripada apabila bekerja secara langsung dengan aplikasi ini, perkara utama adalah tidak melupakan kaedah atau harta mana yang bertanggungjawab untuk apa :). Nah, untuk tidak lupa, saya mencipta MindMap kecil, yang akan saya tambah dan kemas kini secara berkala. Dengan mengikuti pautan, anda boleh melihat Objek Excel, kaedah yang digunakan oleh mereka, parameter kaedah dan jenis mereka mengikut jenis Delphi. Secara umum, helaian curang grafik kecil untuk mereka yang suka bermain-main dengan Excel dalam Delphi.

Dalam artikel ini kita akan melihat binaan asas yang membolehkan anda mengakses buku kerja MS Excel daripada Delphi.

Mengatur akses kepada buku EXCEL

Untuk berinteraksi dengan MS Excel dalam program, anda mesti menggunakan modul ComObj

Menggunakan ComObj;

dan mengisytiharkan pembolehubah untuk mengakses MS Excel seterusnya jenis:

Var MsExcel: Varian;

Dalam kes paling mudah, memulakan pembolehubah Excel boleh dilakukan seperti ini:

MsExcel:= CreateOleObject("Excel.Application");

Mencipta buku baharu:

MsExcel.Workbooks.Add;

Membuka buku sedia ada (di mana laluan ialah laluan ke fail dengan sambungan xls.):

MsExcel.Workbooks.Open;

Untuk membuka buku kerja sedia ada untuk baca sahaja:

MsExcel.Workbooks.Open;

Menutup Excel:

MsExcel.ActiveWorkbook.Close; MsExcel.Application.Quit;

Menyekat permintaan (pengesahan, pemberitahuan) daripada Ms Excel, sebagai contoh, menyekat permintaan untuk menyimpan fail:

MsExcel.DisplayAlerts:=False;

Memaparkan Excel pada skrin:

MsExcel.Visible:= Benar;

atau sembunyikan:

MsExcel.Visible:= Salah;

Mencetak kandungan helaian MS Excel aktif:

MsExcel.ActiveSheet.PrintOut;

Membaca/menulis data dalam EXCEL

Anda boleh mengakses sel dalam buku kerja Excel semasa seperti berikut:

Untuk menulis nilai pada sel:

MsExcel.Range["B2"]:="Hello!";

Untuk membaca nilai daripada sel:

S:=MsExcel.Julat["B2"];

di mana B2- alamat sel.

Atau menggunakan gaya pautan R1C1:

MsExcel.Range]:="Hello!";

di mana - koordinat sel.

Secara umum, anda boleh menetapkan sebarang nilai pada sel Excel (aksara, integer, pecahan, tarikh) dan Ms Excel akan menetapkan pemformatan lalai dalam sel.

Formatkan sel dalam EXCEL

Anda boleh memilih (memilih) sekumpulan sel untuk kerja seterusnya seperti ini:

MsExcel.Range, MsExcel.Cells].Pilih; // atau MsExcel.Range["A1:C5"].Pilih;

dalam kes ini, kawasan yang terletak di antara sel A1 dan C5 akan dipilih.

Selepas membuat pilihan, anda boleh menetapkan penggabungan sel, bungkus perkataan dan mendatar dan penjajaran menegak:

// menggabungkan sel MsExcel.Selection.MergeCells:=True; // bungkus mengikut MsExcel.Selection.WrapText:=True; // penjajaran mendatar MsExcel.Selection.HorizontalAlignment:=3; // penjajaran menegak MsExcel.Selection.VerticalAlignment:=1;

Untuk menegak dan penjajaran mendatar nilai berikut digunakan:

1 - penjajaran lalai digunakan
2 - penjajaran kiri
3 - di tengah
4 - di sebelah kanan.

Sempadan Sel

Apabila ditetapkan kepada 1, sempadan sel dilukis dengan garis pepejal nipis.

Di samping itu, anda boleh menentukan nilai untuk sifat Borders, contohnya, sama dengan 3. Kemudian hanya sempadan atas untuk blok pemilihan akan ditetapkan:

MsExcel.Selection.Borders.LineStyle:=1;

Nilai sifat Borders menentukan gabungan tepi sel yang berbeza. Dalam kedua-dua kes, anda boleh menggunakan nilai dalam julat dari 1 hingga 10.

Menggunakan kata laluan dalam EXCEL

Menetapkan kata laluan untuk buku kerja aktif boleh dilakukan seperti berikut:

Cuba // cuba untuk menetapkan kata laluan MsExcel.ActiveWorkbook.protect("lulus"); kecuali // tindakan jika percubaan untuk menetapkan kata laluan gagal ditamatkan;

di mana lulus- tetapkan kata laluan untuk buku.

Mengalih keluar kata laluan daripada buku adalah serupa, gunakan arahan

MsExcel.ActiveWorkbook.Unprotect("lulus");

di mana lulus

Menetapkan dan mengalih keluar kata laluan untuk helaian aktif buku kerja Excel dilakukan menggunakan arahan

MsExcel.ActiveSheet.protect("lulus"); // menetapkan kata laluan MsExcel.ActiveSheet.Unprotect("pass"); // alih keluar kata laluan

di mana lulus- kata laluan ditetapkan untuk melindungi buku.

Operasi tambahan dalam EXCEL

Mengalih keluar baris dengan anjakan ke atas:

MsExcel.Rows["5:15"].Pilih; MsExcel.Selection.;

Apabila melakukan tindakan ini, baris 5 hingga 15 akan dipadamkan.

Tetapkan kawasan beku pada lembaran kerja Excel yang aktif

// nyahbeku kawasan jika ia ditetapkan MsExcel.ActiveWindow.FreezePanes:=False; // pilih sel yang dikehendaki, dalam kes ini D3 MsExcel.Range["D3"].Pilih; // tetapkan kawasan pembekuan MsExcel.ActiveWindow.FreezePanes:=True;

Menyimpan buku kerja Excel yang aktif