我有一個C#程序,我想將Excel文件導入Microsoft SQL Server 2008 R2。使用C#將Excel文件導入到Microsoft SQL Server中
有人可以給我一個鏈接或教程,我可以完全理解如何做到這一點?
我一直在做這個很長一段時間,我真的不知道如何實現這一點。
請幫忙。謝謝。
我有一個C#程序,我想將Excel文件導入Microsoft SQL Server 2008 R2。使用C#將Excel文件導入到Microsoft SQL Server中
有人可以給我一個鏈接或教程,我可以完全理解如何做到這一點?
我一直在做這個很長一段時間,我真的不知道如何實現這一點。
請幫忙。謝謝。
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);
}
請標記爲回答如果這可以幫助你... – JayOnDotNet
我認爲,已經被賦予了最有用的答案。 我不打算描述C#的方式,但rathher給你一個簡單的方法做它沒有C#:
打開你的MS Access,通過ODBC鏈接你的MS SQL數據庫,在Access中打開你的表,並粘貼你的Excel通過複製粘貼(預格式化以匹配表格模式)在那裏記錄。
當您執行一次性數據導入時,這種方式非常快速且非常實用。
此代碼也可能對您有所幫助。
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();
}
}
嗨,這是有幫助的,但是當我導入時出錯,有時數據類型不匹配,即使它們相同/相似。 – transformer
是你的工作? –
請仔細閱讀此鏈接........ http://www.aspdotnet-suresh.com/2010/09/import-data-from-excel-to-sql-database.html –