2012-10-06 168 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;