将Excel工作表导入MS SQL数据库

我有Excel 2007和Visual Web Developer Express 2010.我想导入一个xlsx文件Sheet1读者然后将数据添加到数据集并将数据放置在MS SQL数据库中。

string ExcelConStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES"; string SQLConStr = "got connection string that works"; OleDbConnection ExcelConnection = new OleDbConnection(ExcelConStr); using (ExcelConnection) { string sql = string.Format("Select * FROM [{0}]", "Sheet1$"); OleDbCommand command = new OleDbCommand(sql, ExcelConnection); ExcelConnection.Open(); using (OleDbDataReader dr = command.ExecuteReader()) { using (SqlBulkCopy bulkCopy = new SqlBulkCopy(SQLConStr)) { bulkCopy.DestinationTableName = "dbo.databaseName"; bulkCopy.WriteToServer(dr); } } } 

我需要像bulkcopy这样的东西,如果有人可以提出build议,那么这个东西是免费且易于使用的。

没有批量复制它也将工作..试试这个将工作100%的.csv和.xlsx两个…我使用它..

  string header = "No"; string sql = string.Empty; DataTable dt = new DataTable(); string pathOnly = string.Empty; string fileName = string.Empty; pathOnly = Path.GetDirectoryName(path); fileName = Path.GetFileName(path); if (IsFirstRowHeader) { header = "Yes"; } String cs = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=\"Excel 12.0;HDR=" + header + ";IMEX=1;\""; OleDbConnection con = new OleDbConnection(cs); if (con.State == ConnectionState.Closed) con.Open(); #region use to find sheet and fire query on sheetname DataTable dtsheets = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); String[] excelSheets = new String[dtsheets.Rows.Count]; int i = 0; // Add the sheet name to the string array. foreach (DataRow row in dtsheets.Rows) { excelSheets[i] = row["TABLE_NAME"].ToString(); i++; } if (extension == ".csv") sql = "SELECT * FROM [" + fileName + "]"; else sql = "SELECT * FROM [" + excelSheets[0] + "]"; #endregion OleDbCommand command = new OleDbCommand(sql, con); OleDbDataAdapter adapter = new OleDbDataAdapter(command); dt.Locale = CultureInfo.CurrentCulture; adapter.Fill(dt); con.Close();