我正在创建一个应该从excel表中读取参数的测试框架。我希望能够:
我在互联网上找到了这个代码。它很棒,但似乎已被编码为使用表单组件。我不一定需要在数据网格上显示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);
答案 0 :(得分:1)
计数行
sheet.Range["A11"].Formula = “COUNT(A1:A10)”;
计数栏
sheet.Range["A12"].Formula = “COUNT(A1:F1)”;
.NET Excel组件
答案 1 :(得分:0)
答案 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;