Excel'den Veri İçe Aktarma, Okuma ve Değiştirme İşlemleri Nasıl Yapılır? QTP/UFT

⚡ Akıllı Özet

Excel'den veri içe aktarma, okuma ve değiştirme işlemleri. QTP/UFT Bu, çalışma kitabını çalışma zamanı veri tablosuna yükleyen yerleşik DataTable nesnesine dayanır; böylece her otomasyon komut dosyası, elektronik tablo satırlarından test adımlarını yönlendirebilir.

  • 📥 İthalat: DataTable.Import tüm bir çalışma kitabını yüklerken, DataTable.ImportSheet ise belirli bir çalışma sayfasını seçilen hedef sayfaya aktarır.
  • 🗂️ Başlık kuralı: Elektronik tablonun ilk satırı sütun adları haline gelir, bu nedenle içe aktarma işlemi başlamadan önce tabloyu yapılandırın.
  • 🔢 Satır sayısı: DataTable.GetSheet(1).GetRowCount, başlık satırını hariç tutarak veri satırlarının sayısını döndürür.
  • 🎯 Satır işaretçisi: Her okuma işleminden önce DataTable.SetCurrentRow'u çağırın, böylece DataTable.Value beklediğiniz hücreyi döndürür.
  • ✏️ Cevap yazın: DataTable.Value'a değer atamak, hücreyi yalnızca bellekte değiştirir; DataTable.Export ise sayfayı diske kaydeder.
  • 🧩 COM seçeneği: Biçimlendirme, formüller veya birden fazla açık çalışma kitabı gerektiğinde Excel.Application nesnesi oluşturun.
  • ⚠️ Temizleme: Her zaman Quit komutunu çağırın ve nesneleri serbest bırakın, aksi takdirde EXCEL.EXE dosyada kalmaya ve dosyayı kilitlemeye devam eder.

Excel'den Veri İçe Aktarma, Okuma ve Değiştirme İşlemleri Nasıl Yapılır? QTP/UFT

Test uzmanlarının girdi değerlerini, beklenen sonuçları ve ortam ayarlarını sakladıkları en yaygın yer hala elektronik tablolardır. QTPşimdi satılıyor OpenText UFT Ürün HP'den Micro Focus'a ve ardından da başka bir şirkete geçtikten sonra... OpenTextBu işlem, DataTable nesnesi aracılığıyla bu elektronik tabloları okur. Aşağıdaki bölümler, bir çalışma kitabını içe aktarmak, satırlarını saymak, tek tek hücreleri okumak, değerleri değiştirmek ve sayfayı diske geri yazmak için kullanılan tam ifadeleri göstermektedir.

EXCEL'den Verileri İçe Aktarma, Okuma ve Değiştirme Adımları

Şunları içe aktarmak istediğinizi varsayalım: Satış.xls Çalışma kitabınızı testinize ekleyin.

Sales.xls kaynak çalışma kitabı, içe aktarılmadan önce Excel'de açıldı. UFT

Dosya içe aktarıldıktan sonra UFTEn üst satır sütun başlığı olur, bu nedenle verilerinizi buna göre yapılandırın. 1. satırdaki her şey test verisi yerine parametre adı olarak kabul edilir ve kalan her satır veri satırı olarak sayılır.

Aşağıda Excel dosyasının tamamını içe aktarmak için kullanılan sözdizimi gösterilmektedir.

DataTable.Import(FileName)

Bizim durumumuzda ifade şu şekilde olur. VBScript'te bir metot ifade olarak çağrıldığında parantez gerekmez, bu nedenle burada düz form kullanılır.

DataTable.Import "D:\Automation\Sales.xls"

Çalıştırma işleminden sonra, içe aktarılan satırlar, çalışma kitabında yerleştirildikleri şekilde, çalışma zamanı Veri bölmesinde görünür.

İthal edilen satış verileri aşağıda gösterilmektedir. UFT çalışma zamanı Veri Tablosu bölmesi

Belirli bir sayfayı içe aktarmak için kullanılan sözdizimi aşağıda gösterilmiştir. SheetSource Bu, çalışma kitabının içindeki sayfadır ve SheetDest Bu, çalışma zamanı veri tablosundaki hedef sayfadır.

DataTable.ImportSheet FileName, SheetSource, SheetDest

Kullan Satır Sayısını Al Bir çalışma sayfasındaki veri satırlarının sayısını elde etme yöntemi. Her ifade kendi satırında yer almalıdır.

DataTable.Import "D:\Automation\Sales.xls"
row = DataTable.GetSheet(1).GetRowCount
MsgBox row

Görüntülenen mesaj kutusu, içe aktarılan sayfanın satır toplamını bildirir.

msgBox İçe aktarılan Satış tablosu için GetRowCount sonucunu görüntülüyor.

İmleci belirli bir satıra taşımak için şunu kullanın: GeçerliSatırı Ayarla yöntem. İkinci argümanı DataTable.Value Bu, satır numarası değil, sayfa numarasıdır; bu nedenle satır işaretçisinin ayrı olarak taşınması gerekir.

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

Her iki değer de aynı sütundan ancak iki farklı satırdan okunur ve mesaj kutusu bunları yan yana yazdırır.

msgBox Veri tablosunun 1. ve 2. satırlarındaki yıl değerlerini karşılaştırma

Kullan Özellik İçe aktarılan sayfadaki verileri değiştirmek için atama işleminin sol tarafındaki yöntem kullanılır. Değişiklik, siz çağırana kadar bellekte kalır. İhracatBu işlem, çalışma zamanı veri tablosunu bir Excel dosyasına geri yazar.

DataTable.SetCurrentRow 1
DataTable.Value("Year", 1) = 2026
DataTable.Export "D:\Automation\Sales_Updated.xls"

Düzenlenen hücre, atama işlemi tamamlandıktan hemen sonra çalışma zamanı Veri bölmesinde görünür.

Çalışma zamanı veri tablosu, DataTable.Value metodu aracılığıyla güncellenen bir hücreyi göstermektedir.

Dışa aktarılan çalışma kitabını açmak, değiştirilen değerlerin yalnızca çalışma süresi boyunca saklanmak yerine diske kaydedildiğini doğrular.

DataTable.Export tarafından kaydedilen değiştirilmiş değerleri gösteren, Excel'de açılan dışa aktarılan Excel dosyası.

💡 İpucu: İçe aktardığınız dosya adından farklı bir dosya adına dışa aktarın. Aynı açık çalışma kitabına geri yazmak, paylaşım ihlaline neden olmanın ve çalışmayı kaybetmenin en hızlı yoludur.

Excel Verilerini Okuma, Değiştirme ve Dışa Aktarma: Eksiksiz Bir Örnek

Yukarıdaki kod parçacıklarının her biri bir yöntemi göstermektedir. Gerçek bir veri odaklı testte, bunlar her satırı dolaşan, bir şey hesaplayan, sonucu saklayan ve sayfayı dışa aktaran tek bir döngüde birleştirilir. Çalışma kitabının Satış.xls Aşağıdaki dört sütunu ve üç veri satırını içerir.

Yıl Bölge Birimler Fiyat
2023 Doğu 120 25
2024 Doğu 150 25
2025 Batısında 200 30

Aşağıdaki komut dosyası bir ekleme yapar. Satış Tutarı Bir sütunu işler, satır satır doldurur, sürekli toplamı tutar ve tamamlanmış sayfayı yeni bir dosyaya yazar. AddParameter Kaynak çalışma kitabında sütun mevcut olmadığı için bu yöntem kullanılır; zaten mevcut olan bir sütun için bu yöntemi çağırmak hataya neden olur.

' 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

Çıktı:

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

Bu senaryoda üç nokta diğerlerinden daha önemlidir. Birincisi, GetRowCount Başlık satırı sütun adları olarak kullanıldığı için 4 yerine 3 döndürür. İkinci olarak, SetCurrentRow Her yinelemenin başında çağrılır; bu olmadan, üç yinelemenin tamamı aynı satırı okuyacaktır. Üçüncüsü, veri tablosundan gelen değerler dizelerdir, bu nedenle CInt Çarpma işleminden önce, aritmetik işlemler yerine dize birleştirmesini önlemek için uygulanır. Atlaping DataTable.Export Bu işlem, hesaplanan geliri Veri bölmesinde görünür halde bırakır ancak diskteki hiçbir dosyada yer almasını engeller.

DataTable Nesnesi ile Excel COM Nesnesi Arasındaki Fark UFT

Elektronik tabloya erişmenin tek yolu DataTable nesnesi değildir. UFT komut dosyaları ayrıca bir şey de oluşturabilir. Excel.Application COM nesnesi ve Excel'i doğrudan kullanma. İki yaklaşım farklı sorunları çözüyor.

Görünüş Veri tablosu nesnesi Excel COM nesnesi
Excel kurulumu Yürütme makinesinde gerekli değildir. Microsoft Excel'in kurulu olması gerekmektedir.
Stili ele almak Sütun adına ve satır işaretçisine göre Hücre koordinatlarına, aralıklara veya adlandırılmış aralıklara göre
tekrarlamalar Satırlar, test yinelemelerini otomatik olarak yönlendirir. Yinelemelerle bağlantı yok; looping manueldir
Biçimlendirme ve formüller Yok sayıldı; yalnızca değerler okundu. Formüllere, renklere ve tablolara tam erişim.
Birden fazla çalışma kitabı Tek bir çalışma zamanı tablosu, sayfalar tek tek içe aktarılıyor. Aynı anda herhangi bir sayıda çalışma kitabı açık olabilir.
Sonuç raporlaması Değerler şurada görünür: UFT sonuçları otomatik olarak çalıştır Kendiniz bildirmediğiniz sürece hiçbir şey kaydedilmez.
Temizlik yükü Tarafından işlendi UFT Tüm nesneleri kapatmalı, çıkmalı ve serbest bırakmalısınız.

Pratik kural basittir. Her bir elektronik tablo satırının bir yineleme haline geldiği, basit parametreleme için DataTable nesnesini kullanın. otomasyon testi Çalıştırın. Yalnızca veri tablosunun ifade edemediği bir şeye ihtiyacınız olduğunda COM nesnesine geçin; örneğin bir formül sonucunu okumak, biçimlendirilmiş bir rapor yazmak veya aynı komut dosyasında iki çalışma kitabını karşılaştırmak gibi. Aşağıdaki örnek bir hücreyi okur, bir durum bilgisi yazar ve Excel'i düzgün bir şekilde kapatır.

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

Çıktı:

Cell A2 contains: 2023

A2 hücresi 2023 değerini içerir çünkü çalışma sayfasının 1. satırı başlık satırıdır ve A sütunu ise veri sütunudur. YılCOM adreslemesinin bir tabanlı olduğunu ve başlığı da saydığını unutmayın, oysa DataTable.SetCurrentRow 1 İlk veri satırındaki noktalar.

Excel Kullanırken Sık Yapılan Hatalar UFT ve Bunları Nasıl Düzeltebilirsiniz

Excel'de karşılaşılan sorunların çoğu UFT Bu hatalar, tekrarlanabilir küçük bir hata kümesinden kaynaklanır. Bunları tanımak, hata ayıklama süresinden büyük ölçüde tasarruf sağlar.

⚠️Uyarı: EXCEL.EXE işleminin yetim kalması, COM otomasyonunun en yaygın yan etkisidir. CreateObject("Excel.Application") bu, şunlarla eşleşmiyor: Quit artı Set … = Nothing Bu işlem, gizli bir Excel örneğinin çalışmasına izin verir. Birkaç yüz test çalışmasının ardından, yürütme makinesinin belleği tükenir ve kaynak çalışma kitabı düzenleme için kilitlenir.

  • Excel bellekte kalır. Çalışma kitabını kapatın, arayın xlApp.QuitArdından, sırasıyla sayfa, çalışma kitabı ve uygulama nesnelerini serbest bırakın. Uygulamayı önce serbest bırakmak, canlı bir referans bırakır ve işlemi devam ettirir.
  • Çalıştırma işlemi bittikten sonra değişiklikler kaybolur. DataTable.Value Yalnızca çalışma zamanı veri tablosuna yazar. DataTable.ExportDosya sistemine hiçbir şey ulaşmıyor.
  • "Sütun mevcut değil" veya geçersiz parametre hatası. Geçirilen sütun adı DataTable.Value Başlık hücresiyle, sondaki boşluklar da dahil olmak üzere, birebir aynı olmalıdır. Kullanın AddParameter Yazmaya başlamadan önce bir sütun oluşturmak.
  • Her yinelemede aynı değerler okunur. SetCurrentRow Döngünün içinde çağrılmadığı için satır işaretçisi hiç hareket etmedi.
  • Tek satırlık sapmalar. GetRowCount Başlık satırını hariç tutar. Başlık satırı ve on kaydı olan bir çalışma kitabı 11 değil, 10 döndürür.
  • Yol ve izin hataları. Sabit kodlanmış yollar gibi D:\Automation\Sales.xls Diğer makinelerde kesintiye uğrar. Ortam değişkeninden yolu oluşturun, böylece aynı komut dosyası her aracıda çalışır.
  • Birleştirilmiş hücreler ve birden fazla başlık satırı. İçe aktarma işlemi, benzersiz adlardan oluşan tam olarak bir başlık satırı bekler. Birleştirilen hücreler boş veya yinelenen parametre adları üretir.
  • İhracatta paylaşım ihlali. Hedef dosya Excel'de açılamıyor Export Çalıştırır. Önce kapatın veya zaman damgalı bir dosya adına dışa aktarın.

Faydalı bir alışkanlık, COM temizleme işlemlerini bir paketin içine sarmaktır. On Error Resume Next Blok, özel bir kurtarma fonksiyonuna yerleştirildiğinden, komut dosyasının ortasında meydana gelen bir hata yine de Excel'i kapatır. Excel verileri resmi bir işleme beslendiğinde test durumu Depo için de aynı disiplin sonuçlar için de geçerlidir: bir kez dışa aktarın, dosyanın var olduğunu doğrulayın, ardından çalıştırmaya ekleyin.

Burada değinilen konuları daha detaylı incelemek için, ilgili metnin tamamını okuyun. QTP/UFT öğretici Daha geniş bir çerçeve için, sonuçları nasıl ileriye taşıyacağınızı öğrenin. ALM'den UFTTemelleri gözden geçirin yazılım testive bu yaklaşımı veri odaklı betikleme ile karşılaştırın. Selenium.

SSS

UFT Bu komut, .xls, .xlsx ve .csv dosyalarını çalışma zamanı veri tablosuna aktarır. Dışa aktarma işlemi her zaman bir .xls çalışma kitabı oluşturur, bu nedenle alt sistem daha yeni .xlsx formatını gerektiriyorsa bir dönüştürücüye veya Excel COM nesnesine ihtiyaç duyulur.

Tasarım zamanı tablosu testle birlikte kaydedilir ve değişmeden kalır. Çalışma zamanı tablosu ise yürütme başladığında oluşturulan bir kopyadır. İçe aktarmalar ve değer atamaları yalnızca çalışma zamanı kopyasını etkiler; bu kopya dışa aktarılmadığı sürece atılır.

Hayır, çünkü bu nesne çalışma kitabının kendisini ayrıştırır. Ancak CreateObject(“Excel.Application”) çağrısını yapan herhangi bir komut dosyası için evet, çünkü bu yöntem gerçek bir Excel örneğini otomatikleştirir ve Excel örneği olmayan bir makinede hemen başarısız olur.

Evet. Her sayfa için ImportSheet işlevini bir kez, her seferinde farklı bir hedef sayfa adıyla çağırın. Genel veriler Genel sayfada, eyleme özgü değerler ise ilgili eylem sayfasında yer almalıdır, böylece yinelemeler bağımsız kalır.

Evet, ve döngü iskeleti genellikle doğrudur. İki şeyi elle doğrulayın: SetCurrentRow'un döngünün içinde olduğundan ve sayısal hücrelerin CInt veya CDbl ile dönüştürüldüğünden emin olun. Oluşturulan kod genellikle ikisini de atlar.

Modern teknolojilerde yapay zeka özellikleri UFT Yapay zeka, kontrolleri görsel olarak tanıyarak, yeniden adlandırılan bir alanın veri setinin her satırını bozmasını engeller. Ayrıca, ek sınır satırları önererek, manuel test tasarımına gerek kalmadan elektronik tablo kapsamını genişletebilir.

Bu yazıyı şu şekilde özetleyin: