Как мне написать отдельный столбец в Excel, используя UFT API
Тест HP UFT API - Сохранение значений ответов / контрольных точек
Я столкнулся с той же проблемой и нашел вышеупомянутую тему, но я пытаюсь выяснить ниже.
Как я могу напечатать разные значения ответа в отдельном столбце в Excel.
У меня есть 4 ответа, я смог добавить первый, и он правильно отображается в Excel.
Когда я добавляю второе значение ответа, он печатается либо в одной и той же ячейке, либо, если я помещаю оба поля ответа в отдельной строке, он печатает в отдельной ячейке, но в одной строке, и мне нужно, чтобы каждый ответ печатался в отдельном столбце.
ID | PersonName | Address | ZipCode
Когда вы идете в "Записать в файл" в свойстве "Tab", есть только одно поле для "Контента", поэтому я могу добавить несколько выводов в "Выражения", но все они экспортируются в одной строке.
Я работаю с Rest и Json UFT-API версии 12.52
Есть идеи?
ОБНОВЛЕНИЕ 1: @ManishChristian
Спасибо, Маниш. Я не могу выполнить сценарий. мой лист находится на рабочем столе, поэтому я предполагаю, что нет необходимости добавлять информацию sql или подключаться к базе данных.
Вот как выглядит мой код:
string price;
price = this.CodeActivity50.Input.Amount.ToString();
System.Data.OleDb.OleDbConnection MyConnection;
System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand();
string sql = null;
MyConnection = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source='C:\\Users/Batman/Desktop/sendAmount.xlsx';Extended Properties=Excel 12.0;Persist Security Info=False");
MyConnection.Open();
myCommand.Connection = MyConnection;
sql = "INSERT into [Sheet1] (COLUMN1) values('" + price + "')";
myCommand.CommandText = sql;
myCommand.ExecuteNonQuery();
MyConnection.Close();
Ошибка выдана:
Механизму базы данных Microsoft Access не удалось найти объект "Лист1". Убедитесь, что объект существует, и что вы правильно написали его имя и путь. Если "Лист1" не является локальным объектом, проверьте подключение к сети или обратитесь к администратору сервера.
Имя моего листа установлено на Sheet1
1 ответ
Вот SQL бесплатный способ записи данных в ваш файл Excel, используя CustomCode
в UFT
,
Предположения:
- Вы установили все свои четыре переменные как
Input parameter
для тебяCustomCode
, Вот ссылка на то, как это сделать.- Вы импортировали все необходимое содержимое в свой код CustomCode, чтобы этот код работал.
Код C#:
using Excel = Microsoft.Office.Interop.Excel;
// IMPORT OTHER REQURED CONTENTS
// CHANGE THESE VARIABLES AS PER YOUR NEED
// ALSO CHANGE WS_Method_Type, WS_Method_Name, sEnvironment, TestDataSet_Val
// FROM BELOW LINES AS PER YOUR INPUT VARIABLE NAMES
String wsMethodType = this.CodeActivity16.Input.WS_Method_Type.ToString();
String wsMethodName = this.CodeActivity16.Input.WS_Method_Name;
String env = this.CodeActivity16.Input.sEnvironment;
String testDataSetVal = this.CodeActivity16.Input.TestDataSet_Val.ToString();
String sheetName = "Sheet1";
String srcFile = @"PATH \ TO \ YOUR \ XLSX \ FILE";
Excel.Application xlApp = null;
Excel.Workbook wb = null;
Excel.Worksheet worksheet = null;
Excel.Range excelCell = null;
xlApp = new Excel.ApplicationClass();
//xlApp.Visible = true; // UN-COMMENT ME TO SEE EXCEL
if (xlApp == null)
{
CodeActivity16.Report("Excel error","Excel could not be started");
}
// OPENING EXCEL TO WRITE THE DATA
wb = xlApp.Workbooks.Open(srcFile,
0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "",
true, false, 0, true, false, false);
worksheet = (Excel.Worksheet)wb.Worksheets[sheetName];
int lastUsedRow = worksheet.Cells.SpecialCells(Excel.XlCellType.xlCellTypeLastCell,Type.Missing).Row;
// LET'S WRITE INPUT VARIABLE VALUES TO COLUMN A:D IN LAST ROW
// CHANGE IT AS PER YOUR NEED
excelCell = (Excel.Range)worksheet.get_Range("A" + lastUsedRow, "A" + lastUsedRow);
excelCell.Value = wsMethodType;
excelCell = (Excel.Range)worksheet.get_Range("B" + lastUsedRow, "B" + lastUsedRow);
excelCell.Value = wsMethodName;
excelCell = (Excel.Range)worksheet.get_Range("C" + lastUsedRow, "C" + lastUsedRow);
excelCell.Value = env;
excelCell = (Excel.Range)worksheet.get_Range("D" + lastUsedRow, "D" + lastUsedRow);
excelCell.Value = testDataSetVal;
wb.Save();
xlApp.Workbooks.Close();
xlApp.Quit();
Замечания:
Вам нужно добавить код обработки ошибок и очистки, так как это не окончательный код.