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.

  • ๐Ÿ“ฅ Impor: DataTable.Import memuat seluruh buku kerja, sedangkan DataTable.ImportSheet menarik satu lembar kerja bernama ke lembar kerja tujuan yang dipilih.
  • ๏ธ Aturan header: Baris pertama spreadsheet akan menjadi nama kolom, jadi susun struktur lembar kerja sebelum proses impor dijalankan.
  • ๐Ÿ”ข Jumlah baris: DataTable.GetSheet(1).GetRowCount mengembalikan jumlah baris data dan tidak termasuk baris header.
  • ๐ŸŽฏ Penunjuk baris: Panggil DataTable.SetCurrentRow sebelum setiap pembacaan agar DataTable.Value mengembalikan sel yang Anda harapkan.
  • ๏ธ Balaslah: Memberikan nilai ke DataTable.Value hanya mengubah sel di memori; DataTable.Export menyimpan lembar kerja ke disk.
  • ๐Ÿงฉ Opsi COM: Buat objek Excel.Application ketika diperlukan pemformatan, rumus, atau beberapa buku kerja yang terbuka.
  • โš ๏ธ Membersihkan: Selalu panggil Quit dan lepaskan objek, jika tidak, EXCEL.EXE akan tetap berada di memori dan mengunci file.

Cara Mengimpor, Membaca, dan Mengubah Data dari Excel di QTP/UFT

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.

File sumber Sales.xls dibuka di Excel sebelum diimpor ke dalam UFT

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.

Data Penjualan Impor yang ditampilkan di UFT Panel Tabel Data saat dijalankan

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.

pesanBox Menampilkan hasil GetRowCount untuk lembar Sales 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.

pesanBox membandingkan nilai Tahun pada baris 1 dan baris 2 dari tabel data

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.

Tabel Data saat runtime yang menunjukkan sel yang diperbarui melalui metode DataTable.Value.

Membuka buku kerja yang diekspor memastikan bahwa nilai yang dimodifikasi telah disimpan ke disk dan bukan hanya disimpan selama proses berjalan.

Berkas Excel yang diekspor dibuka di Excel, menampilkan nilai-nilai yang diubah dan disimpan oleh DataTable.Export.

๐Ÿ’ก 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.Value hanya menulis ke tabel data saat runtime. Tanpa DataTable.Export, tidak ada yang mencapai sistem file.
  • โ€œKolom tidak adaโ€ atau kesalahan parameter tidak valid. Nama kolom yang diteruskan ke DataTable.Value Harus sama persis dengan sel header, termasuk spasi di belakangnya. Gunakan AddParameter untuk membuat kolom sebelum menulis ke dalamnya.
  • Setiap iterasi membaca nilai yang sama. SetCurrentRow tidak dipanggil di dalam loop, sehingga penunjuk baris tidak pernah bergerak.
  • Selisih satu baris dihitung. GetRowCount Tidak 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.xls Terjadi 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 Export berjalan. 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.

Pertanyaan Umum Demo Slot

UFT Mengimpor file .xls, .xlsx, dan .csv ke dalam tabel data saat runtime. Ekspor selalu menghasilkan buku kerja .xls, sehingga diperlukan konverter atau objek COM Excel ketika sistem hilir membutuhkan format .xlsx yang lebih baru.

Tabel pada tahap desain disimpan bersamaan dengan pengujian dan tetap tidak berubah. Tabel pada tahap eksekusi adalah salinan yang dibuat saat eksekusi dimulai. Impor dan penetapan nilai hanya memengaruhi salinan pada tahap eksekusi, yang akan dibuang kecuali jika diekspor.

Tidak, untuk objek DataTable, yang mengurai buku kerja itu sendiri. Ya, untuk skrip apa pun yang memanggil CreateObject(โ€œExcel.Applicationโ€), karena jalur tersebut mengotomatiskan instance Excel sungguhan dan langsung gagal pada mesin tanpa instance tersebut.

Ya. Panggil ImportSheet sekali per lembar dengan nama lembar tujuan yang berbeda setiap kali. Data global berada di lembar Global, sedangkan nilai spesifik tindakan berada di lembar tindakan yang sesuai sehingga iterasi tetap independen.

Ya, dan kerangka perulangan biasanya sudah benar. Verifikasi dua hal secara manual: bahwa SetCurrentRow berada di dalam perulangan, dan bahwa sel numerik dikonversi dengan CInt atau CDbl. Kode yang dihasilkan sering kali menghilangkan keduanya.

Fitur AI di era modern UFT Salah satu fitur yang dirilis mengenali kontrol secara visual, sehingga bidang yang diganti namanya tidak lagi merusak setiap baris dalam kumpulan data. AI juga dapat menyarankan baris batas tambahan, memperluas cakupan spreadsheet tanpa perlu mendesain pengujian secara manual.

Ringkaslah postingan ini dengan: