Jak importować, odczytywać i zmieniać dane z programu EXCEL w QTP/UFT
⚡ Inteligentne podsumowanie
Importowanie, odczytywanie i zmienianie danych z programu Excel w QTP/UFT opiera się na wbudowanym obiekcie DataTable, który ładuje skoroszyt do tabeli danych w czasie wykonywania, dzięki czemu każdy skrypt automatyzacji może sterować krokami testowymi na podstawie wierszy arkusza kalkulacyjnego.

Arkusze kalkulacyjne pozostają najpopularniejszym miejscem, w którym testerzy przechowują swoje wartości wejściowe, oczekiwane wyniki i ustawienia środowiska. QTP, teraz sprzedawane jako OpenText UFT Po przeniesieniu produktu z HP do Micro Focus, a następnie do OpenText, odczytuje te arkusze kalkulacyjne za pomocą obiektu DataTable. Poniższe sekcje pokazują dokładne instrukcje używane do importowania skoroszytu, zliczania wierszy, odczytywania poszczególnych komórek, zmiany wartości i zapisywania arkusza z powrotem na dysk.
Kroki importowania, odczytywania i zmiany danych z programu Excel
Załóżmy, że chcesz zaimportować następujące elementy Sprzedaż.xls zeszyt ćwiczeń do testu.
Po zaimportowaniu pliku do UFT, górny wiersz staje się nagłówkiem kolumny, dlatego ustrukturyzuj swoje dane odpowiednio. Wszystko w wierszu 1 jest traktowane jako nazwa parametru, a nie jako dane testowe, a każdy pozostały wiersz jest liczony jako wiersz danych.
Poniżej przedstawiono składnię importowania całego pliku Excel.
DataTable.Import(FileName)
W naszym przypadku polecenie wygląda następująco. VBScript nie wymaga stosowania nawiasów, gdy metoda jest wywoływana jako polecenie, dlatego tutaj użyto zwykłej formy.
DataTable.Import "D:\Automation\Sales.xls"
Po uruchomieniu zaimportowane wiersze pojawiają się w panelu Dane czasu wykonania dokładnie tak, jak były rozmieszczone w skoroszycie.
Poniżej przedstawiono składnię importowania konkretnego arkusza. SheetSource jest arkuszem wewnątrz skoroszytu i SheetDest jest arkuszem docelowym w tabeli danych czasu wykonania.
DataTable.ImportSheet FileName, SheetSource, SheetDest
Użyj Pobierz liczbę wierszy Metoda pobierania liczby wierszy danych w arkuszu. Każde polecenie musi znajdować się w osobnym wierszu.
DataTable.Import "D:\Automation\Sales.xls" row = DataTable.GetSheet(1).GetRowCount MsgBox row
W wyświetlonym oknie komunikatu wyświetlana jest liczba wierszy dla zaimportowanego arkusza.
Aby przesunąć wskaźnik do określonego wiersza, użyj Ustaw bieżący wiersz metoda. Drugi argument DataTable.Value jest numerem arkusza, a nie numerem wiersza, dlatego wskaźnik wiersza należy przesunąć osobno.
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
Obie wartości odczytywane są z tej samej kolumny, ale z dwóch różnych wierszy, a pole komunikatu wyświetla je obok siebie.
Użyj Wartość: Metoda po lewej stronie zadania służy do zmiany danych w importowanym arkuszu. Zmiana jest przechowywana w pamięci do momentu wywołania Export, który zapisuje tabelę danych czasu wykonania z powrotem do pliku Excel.
DataTable.SetCurrentRow 1 DataTable.Value("Year", 1) = 2026 DataTable.Export "D:\Automation\Sales_Updated.xls"
Edytowana komórka jest widoczna w panelu Dane czasu wykonania bezpośrednio po uruchomieniu zadania.
Otwarcie wyeksportowanego skoroszytu potwierdza, że zmodyfikowane wartości zostały zapisane na dysku, a nie przechowywane tylko na czas trwania wykonywania.
💡 Wskazówka: Eksportuj do pliku o innej nazwie niż ta, którą zaimportowałeś. Ponowne zapisanie do tego samego otwartego skoroszytu to najszybszy sposób na wywołanie naruszenia zasad udostępniania i utratę wykonania.
Jak odczytywać, zmieniać i eksportować dane z programu Excel: kompletny przykład
Powyższe fragmenty kodu demonstrują jedną metodę. W rzeczywistym teście opartym na danych są one łączone w jedną pętlę, która przechodzi przez każdy wiersz, oblicza coś, zapisuje wynik i eksportuje arkusz. Załóżmy, że skoroszyt Sprzedaż.xls zawiera następujące cztery kolumny i trzy wiersze danych.
| Rok | Region | Jednostki | Cena |
|---|---|---|---|
| 2023 | Wschód | 120 | 25 |
| 2024 | Wschód | 150 | 25 |
| 2025 | Zachód | 200 | 30 |
Poniższy skrypt dodaje Revprzyjść kolumnę, wypełnia ją wiersz po wierszu, prowadzi bieżące podsumowanie i zapisuje gotowy arkusz do nowego pliku. AddParameter jest używane, ponieważ kolumna nie istnieje w skoroszycie źródłowym; wywołanie jej dla kolumny, która już istnieje, powoduje błąd.
' 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
Wyjście:
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
Trzy punkty w tym scenariuszu są ważniejsze niż pozostałe. Po pierwsze, GetRowCount Zwraca 3 zamiast 4, ponieważ wiersz nagłówka jest używany jako nazwy kolumn. Po drugie, SetCurrentRow Funkcja ta jest wywoływana na początku każdej iteracji; bez niej wszystkie trzy iteracje odczytałyby ten sam wiersz. Po trzecie, wartości wychodzące z tabeli danych to ciągi znaków, więc CInt jest stosowany przed mnożeniem, aby uniknąć łączenia ciągów znaków zamiast wykonywania działań arytmetycznych. Pomińping DataTable.Export spowoduje, że obliczony przychód będzie widoczny w panelu Dane, ale nie będzie go w żadnym pliku na dysku.
Obiekt DataTable a obiekt COM programu Excel w UFT
Obiekt DataTable nie jest jedynym sposobem dostępu do arkusza kalkulacyjnego. UFT skrypty mogą również tworzyć Excel.Application Obiekt COM i bezpośredni sterownik Excela. Te dwa podejścia rozwiązują różne problemy.
| WYGLĄD | Obiekt DataTable | Obiekt COM programu Excel |
|---|---|---|
| Instalacja programu Excel | Nie jest wymagane na maszynie wykonawczej | Microsoft Należy zainstalować program Excel |
| Styl adresowania | Według nazwy kolumny i wskaźnika wiersza | Według współrzędnych komórki, zakresów lub nazwanych zakresów |
| Iteracje | Wiersze automatycznie sterują iteracjami testów | Brak linku do iteracji; zobaczping jest ręczny |
| Formatowanie i formuły | Zignorowano; odczytywane są tylko wartości | Pełny dostęp do formuł, kolorów i wykresów |
| Wiele skoroszytów | Jedna tabela wykonawcza, arkusze importowane pojedynczo | Możliwość jednoczesnego otwarcia dowolnej liczby skoroszytów |
| Raportowanie wyników | Wartości pojawiają się w UFT uruchom wyniki automatycznie | Nic nie zostanie zarejestrowane, jeśli sam tego nie zgłosisz |
| Obciążenie związane ze sprzątaniem | Obsługiwane przez UFT | Musisz zamknąć, wyjść i zwolnić każdy obiekt |
Praktyczna zasada jest prosta. Użyj obiektu DataTable do prostej parametryzacji, gdzie każdy wiersz arkusza kalkulacyjnego staje się jedną iteracją testowanie automatyzacji Uruchom. Przełącz się na obiekt COM tylko wtedy, gdy potrzebujesz czegoś, czego tabela danych nie może wyrazić, na przykład odczytu wyniku formuły, utworzenia sformatowanego raportu lub porównania dwóch skoroszytów w tym samym skrypcie. Poniższy przykład odczytuje jedną komórkę, zapisuje status i poprawnie zamyka program Excel.
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
Wyjście:
Cell A2 contains: 2023
Komórka A2 zawiera 2023, ponieważ wiersz 1 arkusza kalkulacyjnego jest wierszem nagłówka, a kolumna A jest Rok. Należy zauważyć, że adresowanie COM jest oparte na jedynce i zlicza nagłówek, podczas gdy DataTable.SetCurrentRow 1 punktów w pierwszym wierszu danych.
Typowe błędy podczas korzystania z programu Excel UFT i jak je naprawić
Większość problemów z programem Excel w UFT wynikają z niewielkiej liczby powtarzalnych błędów. Ich rozpoznanie pozwala zaoszczędzić mnóstwo czasu na debugowaniu.
⚠️ Ostrzeżenie: Osierocony proces EXCEL.EXE to najczęstszy efekt uboczny automatyzacji COM. Każdy CreateObject("Excel.Application") który nie jest dopasowany do Quit plus Set … = Nothing Pozostawia uruchomioną ukrytą instancję programu Excel. Po kilkuset uruchomieniach testów w maszynie wykonawczej kończy się pamięć, a skoroszyt źródłowy zostaje zablokowany do edycji.
- Excel pozostaje w pamięci. Zamknij skoroszyt, zadzwoń
xlApp.Quit, a następnie zwolnij obiekty arkusza, skoroszytu i aplikacji w tej kolejności. Zwolnienie aplikacji w pierwszej kolejności pozostawia aktywne odniesienie i utrzymuje proces przy życiu. - Zmiany znikają po uruchomieniu.
DataTable.Valuezapisuje tylko do tabeli danych w czasie wykonywania. BezDataTable.Export, nic nie dociera do systemu plików. - „Kolumna nie istnieje” lub błąd nieprawidłowego parametru. Nazwa kolumny przekazana do
DataTable.Valuemusi dokładnie odpowiadać komórce nagłówka, łącznie ze spacjami na końcu. UżyjAddParameteraby utworzyć kolumnę przed zapisaniem do niej danych. - Każda iteracja odczytuje te same wartości.
SetCurrentRownie została wywołana wewnątrz pętli, więc wskaźnik wiersza nigdy się nie przesunął. - Liczba wierszy różniących się o jeden.
GetRowCountwyklucza wiersz nagłówka. Skoroszyt z nagłówkiem i dziesięcioma rekordami zwraca 10, a nie 11. - Błędy ścieżki i uprawnień. Ścieżki zakodowane na stałe, takie jak
D:\Automation\Sales.xlsPrzerwij na innych maszynach. Zbuduj ścieżkę ze zmiennej środowiskowej, aby ten sam skrypt działał na każdym agencie. - Połączone komórki i wiele wierszy nagłówka. Import oczekuje dokładnie jednego wiersza nagłówka z unikalnymi nazwami. Połączone komórki generują puste lub zduplikowane nazwy parametrów.
- Naruszenie zasad udostępniania podczas eksportu. Nie można otworzyć pliku docelowego w programie Excel, gdy
Exporturuchamia się. Najpierw zamknij go lub wyeksportuj do pliku z nazwą oznaczoną znacznikiem czasu.
Przydatnym nawykiem jest opakowanie czyszczenia COM w On Error Resume Next blok umieszczony w dedykowanej funkcji odzyskiwania, więc awaria w trakcie skryptu nadal powoduje zamknięcie programu Excel. Gdy dane z programu Excel przesyłane są do formalnego walizka testowa repozytorium, ta sama zasada obowiązuje w przypadku wyników: eksportuj raz, sprawdź, czy plik istnieje, a następnie dołącz go do przebiegu.
Aby kontynuować omawianie tematów poruszanych w tym miejscu, przejrzyj całość QTP/UFT Tutorial aby uzyskać szerszy obraz, dowiedz się, jak wprowadzać wyniki do ALM z UFT, przejrzyj podstawy w Testowanie oprogramowaniai porównaj to podejście ze skryptowaniem opartym na danych w Selenium.






