我的@Test方法从excel工作簿中获取输入。输入值分为几个工作表。输入值的总数大于50.如何将带有多个工作表的excel数据传递给@Test方法,因为我无法将@Test方法中的所有参数定义为参数。请帮忙。
答案 0 :(得分:0)
您可以使用System.Data.OleDb并在某种程度上使用它....
public static DataSet actual_read(string filename)
{
var conn = string.Format(@"Provider=Microsoft.ACE.OLEDB.12.0; data source={0}; Extended Properties=Excel 12.0;", filename);
DataSet allSheetVal = new DataSet();
string[] sheets = GetExcelsheetNames(conn);
//bool isspace = false;
using (OleDbConnection con = new OleDbConnection(conn))
{
con.Open();
foreach (string sheet in sheets)
{
string[] spsheet = sheet.Split(' ');
int toSub = (spsheet.Count() > 1) ? 2 : 1;
string sheetName = sheet;
if (sheetName[sheetName.Length - toSub] != '$')
{
if (toSub == 2)
{
sheetName = sheetName.Substring(0, (sheetName.Length - 1));
sheetName += "$'";
}
else
sheetName += '$';
}
var adapter = new OleDbDataAdapter("select * from [" + sheetName + "]", con);
var ds = new DataSet();
adapter.Fill(ds, sheetName);
allSheetVal.Tables.Add(ds.Tables[sheetName].Copy());
}
con.Close();
}
return allSheetVal;
}
这样它将返回一个DataSet,然后你可以读取它....(注意每个工作表在此执行中被视为一个表)