C# 如何读取excel工作表的所有行并使用C在Selenium测试脚本中运行?
我需要帮助读取excel工作表中的所有行作为selenium测试用例中的测试数据 我只能用以下代码读取excel工作表的一行 //硒的建立试验C# 如何读取excel工作表的所有行并使用C在Selenium测试脚本中运行?,c#,excel,c#-4.0,selenium-rc,selenium-webdriver,C#,Excel,C# 4.0,Selenium Rc,Selenium Webdriver,我需要帮助读取excel工作表中的所有行作为selenium测试用例中的测试数据 我只能用以下代码读取excel工作表的一行 //硒的建立试验 public void SetupTest() { selenium = new DefaultSelenium("localhost", 4444, "*googlechrome", "http://www.google.com/"); selenium.Start(); verificatio
public void SetupTest()
{
selenium = new DefaultSelenium("localhost", 4444, "*googlechrome", "http://www.google.com/");
selenium.Start();
verificationErrors = new StringBuilder();
}
//将我连接到我的excel工作表SampleTestData.xls
public void ConnectExcel()
{
excel.Application excelApp = new excel.Application();
excelApp.Visible = true;
string ExcelDataPath = @"C:\SampleTestData.xls";
excel.Workbook excelWorkBook = excelApp.Workbooks.Open(ExcelDataPath, 0, false, 5, "", "", false, excel.XlPlatform.xlWindows, "", true, false, 0, true, false, false);
excel.Sheets excelSheets = excelWorkBook.Worksheets;
excel.Worksheet DataworkSheet = (excel.Worksheet)excelSheets.get_Item("Sheet1");
System.String Search1 = ((excel.Range)DataworkSheet.get_Range("A1", Type.Missing)).Value2 as string;
}
//运行测试的selenium代码
public void StartTest()
{
selenium.open("");
selenium.WaitForPageToLoad("100000");
selenium.Type("gbqfif", search1);
selenium.Click("btnG");
selenium.WaitForPageToLoad("100000");
}
这段代码允许我只选择一行,其中包含search1的值。但是,我需要以这样一种方式对其进行迭代:它将继续运行StartTest方法,直到输入excel工作表中的所有行50为止
任何帮助都将不胜感激。这个答案可能对您有帮助,也可能对您没有帮助,但我将借此机会发布两个您可以使用的代码示例 例1
using System;
using System.Windows.Forms;
using Excel = Microsoft.Office.Interop.Excel;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Excel.Application xlApp ;
Excel.Workbook xlWorkBook ;
Excel.Worksheet xlWorkSheet ;
Excel.Range range ;
string str;
int rCnt = 0;
int cCnt = 0;
xlApp = new Excel.ApplicationClass();
xlWorkBook = xlApp.Workbooks.Open("csharp.net-informations.xls", 0, true, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
range = xlWorkSheet.UsedRange;
for (rCnt = 1; rCnt <= range.Rows.Count; rCnt++)
{
for (cCnt = 1; cCnt <= range.Columns.Count; cCnt++)
{
str = (string)(range.Cells[rCnt, cCnt] as Excel.Range).Value2 ;
MessageBox.Show(str);
}
}
xlWorkBook.Close(true, null, null);
xlApp.Quit();
releaseObject(xlWorkSheet);
releaseObject(xlWorkBook);
releaseObject(xlApp);
}
private void releaseObject(object obj)
{
try
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
obj = null;
}
catch (Exception ex)
{
obj = null;
MessageBox.Show("Unable to release the Object " + ex.ToString());
}
finally
{
GC.Collect();
}
}
}
}
例3
using (FileStream fileStream = File.Open(inputFilenames[0], FileMode.Open, FileAccess.Read))
{
IExcelDataReader excelReader;
if (Path.GetExtension(inputFilenames[0]) == ".xls")
excelReader = Factory.CreateReader(fileStream, ExcelFileType.Binary);
else
excelReader = Factory.CreateReader(fileStream, ExcelFileType.OpenXml);
excelReader.NextResult();
while (excelReader.Name != this.Worksheet)
excelReader.NextResult();
while (excelReader.Read())
{
if (FirstRowHasColumnNames)
{
FirstRowHasColumnNames = false;
}
else
{
//do stuff
var test = GetColumnData(excelReader, 1);
}
}
this.Save(outputFilename);
}
您也可以查看此链接
试试这个:-
//Reading from a OpenXml Excel file (2007 format; *.xlsx)
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
// DataSet - Create column names from first row
excelReader.IsFirstRowAsColumnNames = true;
DataSet result = excelReader.AsDataSet();
while (excelReader.Read())
{ // Reading from row and get columns by index
var test = excelReader.GetString(1);
}
研究如何使用ForEach或For循环。。也做一个谷歌搜索..看看这个链接,学习如何使用Interop基于这个例子,这将是一个伟大的学习经验。。谢谢DJ KRAZE,我看了这条线索,但太复杂了,无法理解。我只想在excel行上循环,但我做不到。我刚刚在下面发布了两个示例。。这并不像你想象的那么复杂。。这是基于你对尝试的恐惧,我能想到的最简单的例子。。尝试该示例,并将其更改为适合上面的代码示例。请让我知道这是否适用于您。。谢谢我将发布一个更简单的例子,你应该能够遵循。。请不要灰心。。。确保在表格顶部添加必要的参考资料,同时感谢DJ KRAZE的回答。在示例1中,我需要为while循环中的第1行声明变量,以便变量随着迭代而变化,我如何才能做到这一点?更具体点。。你指的是我的例子还是别的什么。。用你正在使用的循环编辑你的初始帖子,这样我就可以从那里帮助你了。。谢谢,我指的是你的第一个例子,你如何将一个变量与行相关联,这样它就可以读取while循环中的所有行。我需要添加什么引用才能将其视为对象?您是否在项目顶部添加了类似于以下内容的using语句..这称为使用Excel的别名=Microsoft.Office.Interop.Excel;
//Reading from a OpenXml Excel file (2007 format; *.xlsx)
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
// DataSet - Create column names from first row
excelReader.IsFirstRowAsColumnNames = true;
DataSet result = excelReader.AsDataSet();
while (excelReader.Read())
{ // Reading from row and get columns by index
var test = excelReader.GetString(1);
}