C# 用c语言读写Excel

C# 用c语言读写Excel,c#,excel,oledb,C#,Excel,Oledb,我正在创建一个测试框架,可以从excel工作表中读取参数。我希望能够: 获取工作表中测试记录的行计数 获取列计数 参考一个特定的单元格,如A23,并读取或写入值。 我在网上找到了这个代码。它很棒,但似乎已经被编码为使用表单组件。我不一定需要在datagrid上显示excel工作表 这是我找到的代码。它的工作正常,但我需要添加上述功能。感谢您的帮助: using System.Data; using System.Data.OleDb; ... OleDbConnection con = new

我正在创建一个测试框架,可以从excel工作表中读取参数。我希望能够:

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

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

Select * from [Sheet1$A1:B10] 
例如,上面的代码访问单元A1到B10


请参见

您可以使用此方法:

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,则需要签出该行

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

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

.NET Excel componetn

处理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;

你有没有试着看那张照片??它们已经支持这样的场景。您可以使用以下命令获取行计数:选择count*作为行计数,*FROM和for Get Column count:SELECT count*FROM.sys.columns WHERE object_id=object_id'..'很抱歉,我在运行上述代码时忘记添加了这一点,我得到了错误:TestingTips.ProgrammingTips.ReadExcelFile.ReadExcel:System.Data.OleDb.oledbe异常:Microsoft Jet数据库引擎找不到对象“MyObject”。确保对象存在,并且正确拼写其名称和路径名。