在c#中读写Excel

时间:2012-10-06 07:44:47

标签: c# excel oledb

我正在创建一个应该从excel表中读取参数的测试框架。我希望能够:

  1. 获取工作表中的测试记录的行数
  2. 获取列数
  3. 引用特定单元格,例如A23,并读取或写入值。
  4. 我在互联网上找到了这个代码。它很棒,但似乎已被编码为使用表单组件。我不一定需要在数据网格上显示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);
    

4 个答案:

答案 0 :(得分:1)

计数行

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

计数栏

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

.NET Excel组件

答案 1 :(得分:0)

您可以使用以下代码引用特定单元格:

Select * from [Sheet1$A1:B10] 

例如上面代码访问单元格A1到B10

请参阅here

答案 2 :(得分: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

答案 3 :(得分: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;