SqlBulkCopy-Klasse, wie der Name andeutet, fügt Bulk-Insert von einer Quelle zu einer anderen und daher können alle Zeilen aus der Excel-Tabelle leicht gelesen und eingefügt werden mit der SqlBulkCopy-Klasse.
<add name = "constr" connectionString = "Data
Source=.\SQL2008R2;Database=dbname;User Id=abc;password=xxxxx"/>
Ich habe die Verbindungszeichenfolgen für die Excel-Dateien von sowohl 2003 als auch 2007 oder höher Formaten in der Web.Config-Datei angegeben.
<add name = "Excel03ConString" connectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel
8.0;HDR=YES'"/>
<add name = "Excel07+ConString" connectionString =
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended
Properties='Excel 8.0;HDR=YES'"/>
Der HTML-Markup besteht aus ASP.Net Fileupload-Steuerelement und eine Taste, um den Datei-Upload-Prozess auszulösen.
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button Text="Upload" OnClick = "Upload" runat="server" />
Sie müssen die folgenden Namespaces importieren.
using System.IO;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Configuration;
protected void Upload(object sender, EventArgs e)
{
//Upload and save the file
string excelPath = Server.MapPath("~/Files/") +
Path.GetFileName(FileUpload1.PostedFile.FileName);
FileUpload1.SaveAs(excelPath);
string conString = string.Empty;
string extension = Path.GetExtension(FileUpload1.PostedFile.FileName);
switch (extension)
{
case ".xls": //Excel 97-03
conString = ConfigurationManager.ConnectionStrings["Excel03ConString"].ConnectionString;
break;
case ".xlsx": //Excel 07 or higher
conString =
ConfigurationManager.ConnectionStrings["Excel07+ConString"].ConnectionString;
break;
}
conString = string.Format(conString, excelPath);
using (OleDbConnection excel_con = new OleDbConnection(conString))
{
excel_con.Open();
string sheet1 = excel_con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,
null).Rows[0]["TABLE_NAME"].ToString();
DataTable dtExcelData = new DataTable();
//[OPTIONAL]: It is recommended as otherwise the data will be considered
as String by default.
dtExcelData.Columns.AddRange(new DataColumn[3] { new DataColumn("Id",
typeof(int)),
new DataColumn("Name", typeof(string)),
new DataColumn("Salary",typeof(decimal)) });
using (OleDbDataAdapter oda = new OleDbDataAdapter("SELECT * FROM [" +
sheet1 + "]", excel_con))
{
oda.Fill(dtExcelData);
}
excel_con.Close();
string consString =
ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlConnection con = new SqlConnection(consString))
{
using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(con))
{
//Set the database table name
sqlBulkCopy.DestinationTableName = "dbo.tblPersons";
//[OPTIONAL]: Map the Excel columns with that of the database table
sqlBulkCopy.ColumnMappings.Add("Id", "PersonId");
sqlBulkCopy.ColumnMappings.Add("Name", "Name");
sqlBulkCopy.ColumnMappings.Add("Salary", "Salary");
con.Open();
sqlBulkCopy.WriteToServer(dtExcelData);
con.Close();
}
}
}
}
Quelle ist https://www.aspsnippets.com/Articles/Using-SqlBulkCopy-to-import-Excel-SpreadSheet-data-into-SQL-Server-in-ASPNet-using-C-and-VBNet.aspx für weitere Hilfe besuchen Sie bitte diese hoffe, es wird hilfreich für Sie
Ist Ihre Frage einkochen zu: „Ich möchte eine Datei in eine Datenbank hochladen, über eine Web-Site“ ? – Neil
Dies könnte helfen. http://stackoverflow.com/questions/43064948/importing-excel-file-to-sql-with-c-sharp-entity-framework/43065951?noredirect=1#comment73226327_43065951 Sie müssen von C# zu vb übersetzen, aber das ist nicht schwer. – BeanFrog
Ich überspringe Sie suchte nach einer genauen Antwort mit den falschen Schlüsselwörtern. Es gibt Dutzende ähnlicher Proben. Es ist viel einfacher, nach Code zu suchen, der * eine * Excel-Datei liest und * schreibt * Daten in eine Datenbank schreibt. Es gibt Tausende von Proben. In beiden Fällen sollten Sie ADO.NET verwenden. Sie können Excel-Dateien mit einem OLEDB-Provider lesen. Sie können Daten in SQL Server mit SqlBulkCopy in Bulk schreiben –