我需要通过编码指令将数据从Excel导入数据库
但它给了我一个错误。 “位置0没有排。”在第11行。
与此同时,我应该替换我的表名而不是第8行中的“TABLE”吗?
以下是我的代码:
public static DataTable ReadExcelWithoutOffice(string filePath)
{
var connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties=\"Excel 12.0;IMEX=1;HDR=YES;TypeGuessRows=0;FirstRowHasNames=true;ImportMixedTypes=Text\""; ;
using (var conn = new OleDbConnection(connectionString))
{
conn.Open();
var sheets = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
using (var cmd = conn.CreateCommand())
{
cmd.CommandText = "SELECT * FROM [" + sheets.Rows[0]["TABLE_NAME"].ToString() + "] ";
var adapter = new OleDbDataAdapter(cmd);
var ds = new DataSet();
adapter.Fill(ds);
return ds.Tables[0];
}
}
}
答案 0 :(得分:1)
谢谢大家的回答。 我找到了解决问题的其他方法 这是我的代码:
System.Data.OleDb.OleDbConnection MyConnection;
System.Data.DataSet DtSet;
System.Data.OleDb.OleDbDataAdapter MyCommand;
MyConnection = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source='D:\\C# Projects\\ex.xlsx';Extended Properties=Excel 8.0;");
MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", MyConnection);
MyCommand.TableMappings.Add("tbl_info", "tbl_info");
DtSet = new System.Data.DataSet();
MyCommand.Fill(DtSet);
dgv.DataSource = DtSet.Tables[0];
MyConnection.Close();
答案 1 :(得分:0)
查看此链接。
所以,就像这样。
使用Microsoft Jet:首先创建一个连接
char string[] = "0101";
char ch = string[0];
x = magic(ch);
if (x)
printf("int zero")
然后做一些像......
string Con2 = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
filename + @";Extended Properties='Excel 12.0;IMEX=1'";
System.Data.OleDb.OleDbConnection ExcelConnection =
new System.Data.OleDb.OleDbConnection(Con2);
此链接也很有用。
http://www.c-sharpcorner.com/blogs/import-excel-data-to-database-using-c-sharp1