2017-03-31 3 views
0

Es ist meine erste Zeit, die hier eine Frage posten.wie man Excelblatt (.xlxs) zu sql Bediener 2012 Datenbank durch asp.net und vb.net importiert

Ich habe viel im Web recherchiert, wie man Excel-Sheet (.xlxs) auf SQL Server 2012 Datenbank über asp.net und vb.net hochlädt, aber leider waren all diese Forschungen nutzlos.

kann mir bitte jemand mit dem Quellcode helfen.

danke.

+0

Ist Ihre Frage einkochen zu: „Ich möchte eine Datei in eine Datenbank hochladen, über eine Web-Site“ ? – Neil

+0

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

+0

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 –

Antwort

0

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

Verwandte Themen