2012-10-06 109 views
0

我正在创建一个测试框架,应该从Excel工作表读取参数。我想能够:读取和写入到Excel中的Excel#

  1. 获取的测试记录行数在片
  2. 获得列数
  3. 参考特定的细胞,例如A23和读取或写入值到它。

我在网上找到了这段代码。它很棒,但它似乎已被编码为与表单组件一起工作。我不一定需要显示数据网格上的Excel表。

这是我找到的代码。它的工作正常,但我需要添加上面的功能。感谢您的帮助:)

using System.Data; 
using System.Data.OleDb; 
... 
OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Book1.xls;Extended Properties=Excel 8.0"); 
OleDbDataAdapter da = new OleDbDataAdapter("select * from MyObject", con); 
DataTable dt = new DataTable(); 
da.Fill(dt); 
+1

您是否尝试查看[MSTest的数据驱动测试](http://msdn.microsoft.com/zh-cn/COM/EN-US /库/ ms243147(V = VS.80)的.aspx)?他们已经支持这种情况。 – Juri

+0

你可以得到一行数: “SELECT COUNT(*)的行数,* FROM” –

+0

并获得列数:SELECT COUNT(*)FROM ><数据库名称.sys.columns WHERE OBJECT_ID = OBJECT_ID ('

') –

回答

0

您可以使用此代码参考特定的细胞:

Select * from [Sheet1$A1:B10] 

例如上面的代码获取单元格A1到B10

看到here

0

你可以用这种方法:

private DataTable LoadXLS(string filePath) 
{ 
    DataTable table = new DataTable(); 
    DataRow row; 
    try 
    { 
     using (OleDbConnection cnLogin = new OleDbConnection()) 
     { 
      cnLogin.ConnectionString = "provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + filePath + "';Extended Properties=Excel 8.0;"; 

       cnLogin.Open(); 
       string sQuery = "SELECT * FROM [Sheet1$]"; 
       table.Columns.Add("Tags", typeof(string)); 
       table.Columns.Add("ReplaceWords", typeof(string)); 
       OleDbCommand comDB = new OleDbCommand(sQuery, cnLogin); 

       using (OleDbDataReader drJobs = comDB.ExecuteReader(CommandBehavior.Default)) 
       { 
        while (drJobs.Read()) 
        { 
         row = table.NewRow(); 
         row["Tags"] = drJobs[0].ToString(); 
         row["ReplaceWords"] = drJobs[1].ToString(); 
         table.Rows.Add(row); 
        } 
       } 
      } 
      return table; 
     } 

而且使用这样的:

DataTable dtXLS = LoadXLS(path); 
//and do what you need 

如果你需要写到Excel,你需要检查了这一点http://msdn.microsoft.com/en-us/library/dd264733.aspx

1

计算行

sheet.Range["A11"].Formula = “COUNT(A1:A10)”; 

计数列

sheet.Range["A12"].Formula = “COUNT(A1:F1)”; 

.NET Excel组件

0

一个简单的方法来处理Excel文件和操作对他们来说是下列之一:

  • microsoft.office.interop.excel参考添加到项目中(添加引用.. => .NET选项卡下的搜索=>添加参考)
  • 创建一个新的Excel应用程序,并打开工作簿:

    Excel.Application application = new Excel.Application(); 
    Excel.Workbook workbook = application.Workbooks.Open(workBookPath); 
    Excel.Worksheet worksheet = workbook.Sheets[worksheetNumber]; 
    
  • ,你可以得到的行和列与以下行数:

    var endColumn = worksheet.Columns.CurrentRegion.EntireColumn.Count; 
    var endRow = worksheet.Rows.CurrentRegion.EntireRow.Count;*** 
    
  • 读取值形成一个单元格或单元格区域可以通过以下方式进行的(rowIndex位置是在细胞要读出的行数):

    System.Array values = (System.Array)worksheet.get_Range("A" + 
    rowIndex.ToString(), "D" + rowIndex.ToString()).Cells.Value;