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
 

Maus

Mitglied
Noch ne frage: wird wenn ich das mit OLEDB mache vorrausgesetzt, daß ich auf dem rechner wo ich das prog ausführe, vorrausgesetzt, daß exel installiert ist?
 

Christian Kusmanow

Erfahrenes Mitglied
Noch ne frage: wird wenn ich das mit OLEDB mache vorrausgesetzt, daß ich auf dem rechner wo ich das prog ausführe, vorrausgesetzt, daß exel installiert ist?
Wenn ich dich jetzt richtig verstanden habe,
möchtest Du wissen ob es Vorraussetzung ist, das Excel installiert ist?

Nein ist es nicht. :)
 

Maus

Mitglied
bei dem Codebeispiel wird ja davon ausgegegangen, daß man den Sheetnamen weiß. gibt es auch eine möglichkeit die sheetnamen auszulesen?
bei einer DB kann man ja auch in der tabelle syscolum, alle tabellennamen der datenbank erfahren.
so könnte ich dann, sheet für sheet die daten des excel-file auslesen und entsprechend des sheetnamen in eine tabelle einfügen. Aber wie komm ich an die sheet namen?
 

Norbert Eder

Erfahrenes Mitglied
1. Excel muss nicht installiert sein.

2. Du greifst mit dieser Lösung auf das Excel-Sheet zu wie auf eine Datenbank. Ergo kannst du auch abfragen welche Sheets/Tabellen es gibt. Da bitte aber selber suchen, das weiß ich jetzt nicht auswändig und mit der Information die du hast, sollte sich das finden lassen.
 

Maus

Mitglied
Gegoogelt hab ich schon wie verrückt. Klar muß man irgendwie an die sheetnamen kommten. die frage ist halt nur wie. bei Ms SQL Server geht man einfach in eine Datenbankstandarttabelle (syscolum flaub ich) und da sind alle tabellennamen enthalten.
Die frage ist halt nur, wo stehen im nem Excelfile die Sheetnamen und wie kommt man ran.

Dann werd ich mal weitergooglen
 

Forum-Statistiken

Themen
272.356
Beiträge
1.558.615
Mitglieder
187.832
Neuestes Mitglied
SirrDansen