我想使用OLEDB从xls文件中读取所有数据,但是我没有任何经验。
string filename = @"C:\Users\sasa\Downloads\user-account-creation_2.xls";
string connString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filename + ";Extended Properties='Excel 8.0;HDR=YES'";
using (System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(connString))
{
conn.Open();
System.Data.OleDb.OleDbCommand selectCommand = new System.Data.OleDb.OleDbCommand("select * from [Sheet1$]", conn);
System.Data.OleDb.OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter(selectCommand);
DataTable dt = new DataTable();
adapter.Fill(dt);
int counter = 0;
foreach (DataRow row in dt.Rows)
{
String dataA = row["email"].ToString();
// String dataB= row["DataB"].ToString();
Console.WriteLine(dataA + " = ");
counter++;
if (counter >= 40) break;
}
}
我想从电子邮件行中读取所有数据
我收到此错误
“ Sheet $”不是有效名称。确保它不包含无效字符或标点符号,并且时间不要太长
答案 0 :(得分:0)
是否可以使用Open XML SDK?
答案 1 :(得分:0)
好吧,您没有工作表Sheet1吗?您的工作表似乎被称为“来自用户名的电子邮件地址”,因此您的查询应该是...
Select * From ['email address from username$']
也请不要使用Microsoft.Jet.OLEDB.4.0,因为它现在已经过时了。使用Microsoft.ACE.OLEDB.12.0。如果在扩展属性中指定Excel 12.0,它将同时打开.xls和.xlsx文件。
您还可以单行加载DataTable ...
dt.Load(new System.Data.OleDb.OleDbCommand("Select * From ['email address from username$']", conn).ExecuteReader());
要读取文件中表的名称,请使用...
DataTable dtTablesList = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
foreach (DataRow drTable in dtTablesList.Rows)
{
//Do Something
//But be careful as this will also return Defined Names. i.e ranges created using the Defined Name functionality
//Actual Sheet names end with $ or $'
if (drTable["Table_Name"].ToString().EndsWith("$") || drTable["Table_Name"].ToString().EndsWith("$'"))
{
Console.WriteLine(drTable["Table_Name"]);
}
}