Cara Mengimpor, Membaca, dan Mengubah Data dari EXCEL di QTP/UFT
โก Ringkasan Cerdas
Mengimpor, membaca, dan mengubah data dari Excel di QTP/UFT Mengandalkan objek DataTable bawaan, yang memuat buku kerja ke dalam tabel data saat runtime sehingga setiap skrip otomatisasi dapat menjalankan langkah-langkah pengujian dari baris spreadsheet.

Spreadsheet tetap menjadi tempat paling umum bagi penguji untuk menyimpan nilai input, hasil yang diharapkan, dan pengaturan lingkungan mereka. QTP, sekarang dijual sebagai OpenText UFT Setelah produk tersebut berpindah dari HP ke Micro Focus, lalu ke... OpenTextFungsi ini membaca spreadsheet melalui objek DataTable. Bagian di bawah ini menunjukkan pernyataan persis yang digunakan untuk mengimpor buku kerja, menghitung barisnya, membaca sel individual, mengubah nilai, dan menulis kembali lembar kerja ke disk.
Langkah-langkah Impor, Baca, Ubah Data dari EXCEL
Misalkan Anda ingin mengimpor hal-hal berikut Penjualan.xls masukkan buku kerja ke dalam tes Anda.
Setelah file diimpor ke dalam UFTBaris paling atas menjadi judul kolom, jadi susun data Anda sesuai dengan itu. Apa pun yang ada di baris 1 diperlakukan sebagai nama parameter dan bukan sebagai data uji, dan setiap baris yang tersisa dihitung sebagai baris data.
Sintaks untuk mengimpor seluruh file Excel ditunjukkan di bawah ini.
DataTable.Import(FileName)
Dalam kasus kita, pernyataannya menjadi seperti berikut. VBScript tidak memerlukan tanda kurung ketika sebuah metode dipanggil sebagai sebuah pernyataan, jadi bentuk polos digunakan di sini.
DataTable.Import "D:\Automation\Sales.xls"
Setelah proses dijalankan, baris yang diimpor akan muncul di panel Data saat dijalankan persis seperti yang telah diatur dalam buku kerja.
Berikut ini adalah sintaks untuk mengimpor satu lembar kerja tertentu. SheetSource adalah lembar yang ada di dalam buku kerja dan SheetDest adalah lembar tujuan dalam tabel data runtime.
DataTable.ImportSheet FileName, SheetSource, SheetDest
Gunakan DapatkanJumlahBaris Metode untuk mendapatkan jumlah baris data dalam sebuah lembar kerja. Setiap pernyataan harus berada di barisnya masing-masing.
DataTable.Import "D:\Automation\Sales.xls" row = DataTable.GetSheet(1).GetRowCount MsgBox row
Kotak pesan yang muncul melaporkan jumlah total baris untuk lembar kerja yang diimpor.
Untuk memindahkan penunjuk ke baris tertentu, gunakan AturBarisSaatIni metode. Argumen kedua dari DataTable.Value adalah nomor lembar, bukan nomor baris, itulah sebabnya penunjuk baris harus digerakkan secara terpisah.
DataTable.Import "D:\Automation\Sales.xls" ' In the code below, 1 is the sheet number DataTable.SetCurrentRow 1 Row1 = DataTable.Value("Year", 1) DataTable.SetCurrentRow 2 Row2 = DataTable.Value("Year", 1) MsgBox "Year Row 1 = " & Row1 & " Year Row 2 = " & Row2
Kedua nilai tersebut dibaca dari kolom yang sama tetapi dari dua baris yang berbeda, dan kotak pesan menampilkannya berdampingan.
Gunakan Nilai Metode di sebelah kiri penugasan untuk mengubah data di lembar yang diimpor. Perubahan tersebut tersimpan di memori hingga Anda memanggilnya. Ekspor, yang menulis kembali tabel data runtime ke dalam file Excel.
DataTable.SetCurrentRow 1 DataTable.Value("Year", 1) = 2026 DataTable.Export "D:\Automation\Sales_Updated.xls"
Sel yang diedit akan terlihat di panel Data saat eksekusi, tepat setelah tugas dijalankan.
Membuka buku kerja yang diekspor memastikan bahwa nilai yang dimodifikasi telah disimpan ke disk dan bukan hanya disimpan selama proses berjalan.
๐ก Kiat: Ekspor ke nama file yang berbeda dari yang Anda impor. Menulis kembali ke buku kerja yang sama yang sedang terbuka adalah cara tercepat untuk memicu pelanggaran berbagi dan kehilangan proses.
Cara Membaca, Mengubah, dan Mengekspor Data Excel: Contoh Lengkap
Cuplikan kode di atas masing-masing mendemonstrasikan satu metode. Dalam pengujian berbasis data yang sebenarnya, semuanya digabungkan menjadi satu perulangan yang menelusuri setiap baris, menghitung sesuatu, menyimpan hasilnya, dan mengekspor lembar kerja. Asumsikan buku kerja tersebut Penjualan.xls berisi empat kolom dan tiga baris data berikut.
| Tahun | Daerah | unit | Harga |
|---|---|---|---|
| 2023 | Timur | 120 | 25 |
| 2024 | Timur | 150 | 25 |
| 2025 | Barat | 200 | 30 |
Skrip di bawah ini menambahkan sebuah Revenue mengisi kolom baris demi baris, mencatat total yang terus bertambah, dan menulis lembar kerja yang sudah selesai ke file baru. AddParameter Fungsi ini digunakan karena kolom tersebut tidak ada di buku kerja sumber; memanggilnya untuk kolom yang sudah ada akan menimbulkan kesalahan.
' Read, calculate and export Excel data in UFT One Dim sh, rowCount, i, units, price, revenue, total DataTable.Import "D:\Automation\Sales.xls" Set sh = DataTable.GetSheet(1) sh.AddParameter "Revenue", "" rowCount = sh.GetRowCount Print "Total rows imported: " & rowCount total = 0 For i = 1 To rowCount DataTable.SetCurrentRow i units = DataTable.Value("Units", 1) price = DataTable.Value("Price", 1) revenue = CInt(units) * CInt(price) DataTable.Value("Revenue", 1) = revenue total = total + revenue Print "Row " & i & " | Year: " & DataTable.Value("Year", 1) & _ " | Region: " & DataTable.Value("Region", 1) & _ " | Revenue: " & revenue Next Print "Grand Total Revenue: " & total DataTable.Export "D:\Automation\Sales_Revenue.xls" Set sh = Nothing
Keluaran:
Total rows imported: 3 Row 1 | Year: 2023 | Region: East | Revenue: 3000 Row 2 | Year: 2024 | Region: East | Revenue: 3750 Row 3 | Year: 2025 | Region: West | Revenue: 6000 Grand Total Revenue: 12750
Tiga poin dalam naskah ini lebih penting daripada yang lainnya. Pertama, GetRowCount Mengembalikan nilai 3, bukan 4, karena baris header digunakan sebagai nama kolom. Kedua, SetCurrentRow Fungsi ini dipanggil di awal setiap iterasi; tanpanya, ketiga iterasi akan membaca baris yang sama. Ketiga, nilai yang keluar dari tabel data berupa string, jadi CInt diterapkan sebelum perkalian untuk menghindari penggabungan string alih-alih aritmatika. Lewatiping DataTable.Export Pendapatan yang dihitung akan tetap terlihat di panel Data tetapi tidak tersimpan dalam file apa pun di disk.
Objek DataTable vs Objek COM Excel UFT
Objek DataTable bukanlah satu-satunya cara untuk mengakses spreadsheet. UFT skrip juga dapat membuat sebuah Excel.Application Objek COM dan menjalankan Excel secara langsung. Kedua pendekatan tersebut menyelesaikan masalah yang berbeda.
| Aspek | Objek DataTable | Objek COM Excel |
|---|---|---|
| Instalasi Excel | Tidak diperlukan pada mesin eksekusi. | Microsoft Excel harus diinstal. |
| Gaya penyampaian | Berdasarkan nama kolom dan penunjuk baris | Berdasarkan koordinat sel, rentang, atau rentang bernama |
| Iterasi | Baris secara otomatis menjalankan iterasi pengujian. | Tidak ada tautan ke iterasi; looping manual |
| Pemformatan dan rumus | Diabaikan; hanya nilai yang dibaca. | Akses penuh ke rumus, warna, dan grafik. |
| Beberapa buku kerja | Satu tabel waktu proses, lembar diimpor satu per satu. | Sejumlah buku kerja dapat dibuka secara bersamaan. |
| Pelaporan hasil | Nilai-nilai muncul di dalam UFT jalankan hasilnya secara otomatis | Tidak ada yang tercatat kecuali Anda melaporkannya sendiri. |
| Beban pembersihan | Ditangani oleh UFT | Anda harus menutup, keluar, dan melepaskan setiap objek. |
Aturan praktisnya sederhana. Gunakan objek DataTable untuk parameterisasi yang mudah, di mana setiap baris spreadsheet menjadi satu iterasi dari sebuah pengujian otomasi jalankan. Beralihlah ke objek COM hanya ketika Anda memerlukan sesuatu yang tidak dapat diungkapkan oleh tabel data, seperti membaca hasil rumus, menulis laporan yang diformat, atau membandingkan dua buku kerja dalam skrip yang sama. Contoh di bawah ini membaca satu sel, menulis kembali status, dan menutup Excel dengan benar.
Dim xlApp, xlBook, xlSheet, cellValue Set xlApp = CreateObject("Excel.Application") xlApp.Visible = False xlApp.DisplayAlerts = False Set xlBook = xlApp.Workbooks.Open("D:\Automation\Sales.xls") Set xlSheet = xlBook.Worksheets("Sheet1") cellValue = xlSheet.Cells(2, 1).Value Print "Cell A2 contains: " & cellValue xlSheet.Cells(2, 5).Value = "Reviewed" xlBook.Save ' Release everything, in this order xlBook.Close False xlApp.Quit Set xlSheet = Nothing Set xlBook = Nothing Set xlApp = Nothing
Keluaran:
Cell A2 contains: 2023
Sel A2 berisi 2023 karena baris 1 lembar kerja adalah baris header dan kolom A adalah TahunPerhatikan bahwa pengalamatan COM berbasis satu dan menghitung header, sedangkan DataTable.SetCurrentRow 1 poin pada baris data pertama.
Kesalahan Umum Saat Menggunakan Excel dengan UFT dan Cara Memperbaikinya
Sebagian besar masalah Excel di UFT Kesalahan tersebut berasal dari sejumlah kecil kesalahan yang dapat diulang. Mengenali kesalahan-kesalahan ini menghemat banyak waktu dalam proses debugging.
โ ๏ธ Peringatan: Proses EXCEL.EXE yang yatim piatu adalah efek samping paling umum dari otomatisasi COM. Setiap CreateObject("Excel.Application") yang tidak sesuai dengan Quit plus Set โฆ = Nothing Membiarkan sebuah instance Excel tersembunyi tetap berjalan. Setelah beberapa ratus kali pengujian, mesin eksekusi kehabisan memori dan buku kerja sumber terkunci untuk diedit.
- Excel tetap berada di memori. Tutup buku kerja, panggil
xlApp.QuitKemudian, lepaskan objek sheet, workbook, dan application secara berurutan. Melepaskan application terlebih dahulu akan mempertahankan referensi aktif dan menjaga proses tetap berjalan. - Perubahan akan hilang setelah proses dijalankan.
DataTable.Valuehanya menulis ke tabel data saat runtime. TanpaDataTable.Export, tidak ada yang mencapai sistem file. - โKolom tidak adaโ atau kesalahan parameter tidak valid. Nama kolom yang diteruskan ke
DataTable.ValueHarus sama persis dengan sel header, termasuk spasi di belakangnya. GunakanAddParameteruntuk membuat kolom sebelum menulis ke dalamnya. - Setiap iterasi membaca nilai yang sama.
SetCurrentRowtidak dipanggil di dalam loop, sehingga penunjuk baris tidak pernah bergerak. - Selisih satu baris dihitung.
GetRowCountTidak termasuk baris header. Sebuah buku kerja dengan header dan sepuluh catatan akan mengembalikan 10, bukan 11. - Kegagalan jalur dan izin. Jalur yang dikodekan secara permanen seperti
D:\Automation\Sales.xlsTerjadi kesalahan pada mesin lain. Buat jalur dari variabel lingkungan sehingga skrip yang sama berjalan di setiap agen. - Sel yang digabung dan beberapa baris header. Impor tersebut mengharapkan tepat satu baris header dengan nama unik. Sel yang digabungkan akan menghasilkan nama parameter kosong atau duplikat.
- Pelanggaran berbagi informasi ekspor. File tujuan tidak dapat dibuka di Excel saat
Exportberjalan. Tutup terlebih dahulu, atau ekspor ke nama file dengan stempel waktu.
Kebiasaan yang bermanfaat adalah membungkus pembersihan COM dalam sebuah On Error Resume Next Blok ditempatkan dalam fungsi pemulihan khusus, sehingga kegagalan di tengah skrip tetap mematikan Excel. Ketika data Excel dimasukkan ke dalam fungsi formal Kasus cobaan Sama halnya dengan repositori, disiplin yang sama berlaku untuk hasil: ekspor sekali, verifikasi bahwa file tersebut ada, lalu lampirkan ke proses eksekusi.
Untuk mendalami lebih lanjut topik-topik yang telah dibahas di sini, pelajari selengkapnya. QTP/UFT tutorial Untuk kerangka kerja yang lebih luas, pelajari cara mendorong hasil ke dalam ALM dari UFT, tinjau kembali dasar-dasarnya di pengujian perangkat lunak, dan membandingkan pendekatan tersebut dengan pembuatan skrip berbasis data di Selenium.






