Xls -> Sql

Maus

Mitglied
kann mir einer dabei helfen, daten aus einem Xls file in eine DB zu importieren?
das ganze soll aus einem C# programm erfolgen
 

Norbert Eder

Erfahrenes Mitglied
Ah, doch so viele Angaben ...

Keine näheren Angaben zum XLS, keine Angaben um welche Datenbank es sich handelt. Ja wie soll dir denn da dann geholfen werden?

Hast du schon damit angefangen? Wo genau liegt dein Problem? Schon danach gesucht? Fragen über Fragen ....
 

Maus

Mitglied
Das xls file ist ein Exportfile von MS SQL-Server von einer datenbank. Es hat also für jede tabelle der Datenbank einen sheet. Es sind also so ca 20 sheets drin. Jetzt will ich diese informationen wieder mit einem c# programm in diese datenbank einspielen.
und da weiß ich nicht wie es geht.


So ich hoffe jetzt sin alle Klarheiten beseitigt
 

Norbert Eder

Erfahrenes Mitglied
Also gehts dir eigentlich nur darum, die Daten von einer Datenbank in eine neue Datenbank zu bringen? Wieso machst da nicht einfach eine Sicherung und eine Wiederherstellung der Sicherung anstatt irrwitzig über ein XLS-File zu gehen?
 

Maus

Mitglied
weil durch das installationsprogramm eine beliebige Db angegeben werden kann auf einem beliebigen server. Auf dem ursprünglichen server vord die datenbank nur erstellt. das hat gründe in dem sofwareprojekt zu dem es gehört.

Theoretisch könnt ich es klar einfach wieder importieren. aber in dem "installationsprogramm" werden dann noch andere sachen eingebaut
 

Nico Graichen

Erfahrenes Mitglied
Hi,

Ersmal würde ich den Vorschlag machen, dass du deine Exportfiles im csv-Format abspeicherst, da du es dann dann viel einfacher hast sie auszulesen.

Ansonsten: schau dir mal die Visiul Studio Tool for Office Systems (VSTO) an. Bzw.. die COM-Schnittstelle für Excel (das Objektmodell entspricht dem von VBA). Infos dazu gibts jedemenge im MSDN. Wenn du dass jedoch machen willst. ist vorausgesetzt, dass auf dem Zielrechner auch Excel installiert ist.
 

Maus

Mitglied
kann ich denn in ne csv-datei auch mehrere tabellen speichern? in exel geht das ja nicht. wie geht das dann als export von ner Datenbank?
 

Nico Graichen

Erfahrenes Mitglied
Achso, das hatte ich übersehen, dass 20 Sheets in der Datei sind.
Dann bleibt die höchstwahrscheinlich doch nur die Variante mit Excel (oder du nimmst 20 csv-Dateien). Es sei denn, es kennt jemand ne bessere Lösung.
 

Norbert Eder

Erfahrenes Mitglied
Guckt mal da:
Code:
strConn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\TEMP\TEST.XLS;Extended Properties=Excel 8.0;";

string sList="myspreadsheetname";


   OleDbConnection oConn = new OleDbConnection();
  
   oConn.ConnectionString = strConn;
   oConn.Open();
  
   OleDbDataAdapter oCmd = new OleDbDataAdapter("SELECT * FROM [" + sList + "$]", oConn);
   DataSet oDS = new DataSet();
   oCmd.Fill(oDS);

   foreach(DataRow oRow in oDS.Tables[0].Rows)
  {  
      Response.Write("Row: " + oRow["COLUMNNAME"].ToString() + "<br>");
   }


if (oConn.State == ConnectionState.Open) { oConn.Close(); }
 

Maus

Mitglied
also wenn ich das richtig verstanden hab:
Das exelfile Tabelle für tabelle auslesen, und dann in eine DB Tabelle für tabelle einfüge.
Klingt logisch.
Danke