使用C#将Excel文件导入Microsoft SQL Server

我有一个C#程序,我想将一个Excel文件导入Microsoft SQL Server 2008 R2。

有人可以给我一个链接或教程,我可以充分了解如何?

我一直在做这个很长一段时间,我真的不知道如何实现这一点。

请帮忙。 谢谢。

string excelConnectionString = @"Provider=Microsoft .Jet.OLEDB.4.0;Data Source=Book1.xls;Extended Properties=""Excel 8.0;HDR=YES;"""; 

// Create Connection to Excel Workbook

我们可以这样导入excel到sql server

using (OleDbConnection connection = new OleDbConnection(excelConnectionString)){

OleDbCommand command = new OleDbCommand ("Select ID,Data FROM [Data$]", connection);

 connection.Open(); `// Create DbDataReader to Data Worksheet ` using (DbDataReader dr = command.ExecuteReader()) { // SQL Server Connection String string sqlConnectionString = "Data Source=.; Initial Catalog=Test;Integrated Security=True"; // Bulk Copy to SQL Server using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnectionString)) { bulkCopy.DestinationTableName = "ExcelData"; bulkCopy.WriteToServer(dr); } 

这段代码也可能帮助你。

 private void processExcel(string filename) { filename = Server.MapPath("~/Files/WM-0b23-productsBook.xlsx"); Microsoft.Office.Interop.Excel.Application xlApp; Microsoft.Office.Interop.Excel.Workbook xlWorkBook; Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet; var missing = System.Reflection.Missing.Value; xlApp = new Microsoft.Office.Interop.Excel.Application(); xlWorkBook = xlApp.Workbooks.Open(filename, false, true, missing, missing, missing, true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, '\t', false, false, 0, false, true, 0); xlWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1); Microsoft.Office.Interop.Excel.Range xlRange = xlWorkSheet.UsedRange; Array myValues = (Array)xlRange.Cells.Value2; int vertical = myValues.GetLength(0); int horizontal = myValues.GetLength(1); System.Data.DataTable dt = new System.Data.DataTable(); // must start with index = 1 // get header information for (int i = 1; i <= horizontal; i++) { dt.Columns.Add(new DataColumn(myValues.GetValue(1, i).ToString())); } // Get the row information for (int a = 2; a <= vertical; a++) { object[] poop = new object[horizontal]; for (int b = 1; b <= horizontal; b++) { poop[b - 1] = myValues.GetValue(a, b); } DataRow row = dt.NewRow(); row.ItemArray = poop; dt.Rows.Add(row); } // assign table to default data grid view GridView1.DataSource = dt; GridView1.DataBind(); xlWorkBook.Close(true, missing, missing); xlApp.Quit(); releaseObject(xlWorkSheet); releaseObject(xlWorkBook); releaseObject(xlApp); } private void releaseObject(object obj) { try { System.Runtime.InteropServices.Marshal.ReleaseComObject(obj); obj = null; } catch (Exception ex) { obj = null; MessageBox.Show("Unable to release the Object " + ex.ToString()); } finally { GC.Collect(); } } 

看看这个post:

批量插入数据使用C#DataTable和SQL Server OpenXML函数

将数据从Excel导入到SQL Server

我认为已经给出了最有用的答案。 我不打算描述C#的方式,但rathher给你一个简单的方法做到这一点没有C#:

打开您的MS Access,通过ODBC链接您的MS SQL数据库,在Access中打开您的表,并通过复制粘贴(预格式化以匹配表模式)粘贴您的Excellogging。

当你做一次性的数据导入时,这种方式非常快速和有用。