Autor Beitrag
dacrown
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mi 18.06.08 16:31 
Hallo zusammen,

ich habe hier ein kleines Problem und komme nicht weiter, weil mir die Erfahrung fehlt.
Ich möchte aus Excel ausgewählte Daten in den SQL 2005 Server schreiben.
Daten Excel lesen, kein Problem, Verbindung Server, auch kein Problem, danach wird es kritsch und ich werde immer vom compiler rausgeschmissen...
anhand meines quellcodes könnt ihr mir vielleicht helfen, ob ich überhaupt den richtigen ansatz gewählt habe, bzw ob ihr eine idee habt, wie man weiter vorgehen könnte...
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
private void opendata_Click(object sender, EventArgs e)
{
OpenFileDialog dlgFileOpen = new OpenFileDialog();
dlgFileOpen.Title = "Pfadangabe Datenbank";
dlgFileOpen.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal);

string strFilter = "Exceldateien (*.xls)|*.xls|Access Datenbank (*.adp)|*.adp";
dlgFileOpen.Filter = strFilter;


if (dlgFileOpen.ShowDialog() == DialogResult.OK)
{
pfad = dlgFileOpen.FileName;
textBox1.Text = pfad;

Excel.Application ExcelOpen = new Excel.ApplicationClass();
ExcelOpen.Visible = false;
object m = Missing.Value;
Excel.Workbook Exceldatei = ExcelOpen.Workbooks.Open(pfad, m, m, m, m, m, m, m, m, m, m, m, m, m, m);

Excel.Sheets sheets = ExcelOpen.Worksheets;

Excel.Worksheet worksheet = (Excel.Worksheet)sheets.get_Item(1);


for (int i = 1; i <= 10; i++)
{
Excel.Range range = worksheet.get_Range("A" + i.ToString(), "J" + i.ToString());
System.Array myvalues = (System.Array)range.Cells.Value2;
string[] strArray = ConvertToStringArray(myvalues);
listView1.Items.Add(new ListViewItem(strArray));
}

SqlConnection con = new SqlConnection();
con.ConnectionString = "Data Source =(local);" + "Initial Catalog=TestDB;" + "Trusted_Connection = yes";
con.Open();
}
}


Zuletzt bearbeitet von dacrown am Mi 18.06.08 17:54, insgesamt 1-mal bearbeitet
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mi 18.06.08 17:27 
Bevor wir anfangen nachzudenken, solltest Du den Code als solchen kennzeichnen (das kannst Du auch nachträglich machen): Textbereich markieren, "Bereiche" öffnen, das Plus neben C# drücken.

Außerdem solltest Du unbedingt genau die Stelle angeben, an der Dich der Compiler rausschmeißt, und dazu die genaue Fehlermeldung. (Oder ist es entgegen Deiner Angabe ein Laufzeitfehler mit Exception? Dann fehlen diese Angaben.)

In einem anderen Forum habe ich gerade eine lange Diskussion über "Glaskugel" gelesen. Jürgen
dacrown Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mi 18.06.08 17:58 
so müsste es passen! bis hierhin läuft auch alles...
wenn ich aber danach die ausgelesenen Excel Daten in SQL schreiben möchte, scheiter ich!
frage: habe ich überhaupt den richtigen ansatz gewählt? wie bekomme ich die daten rein und kann mir diese auch über das Microsoft SQL Management Studio anschauen?
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Do 19.06.08 09:33 
Gut, jetzt habe ich Dein Vorgehen und vermutlich Dein Problem verstanden.

Grundsätzlich möchte ich davon abraten, mit einem Array zu arbeiten. Arrays sind nicht typsicher und wegen der festen Größe unflexibel. Besser ist List<T>. Aber da Dein Ziel sowieso ist, die Daten in der ListView unterzubringen, kann man das so lassen. (Vielleicht gibt es da bessere Wege, aber da fehlen mir die Kenntnisse an der Zusammenarbeit zwischen C# und Excel.)

Für das Übergeben der Daten an die Datenbank solltest Du [url=file:///F:/Literatur/CSharp_Visual/visual_csharp_26_000.htm#Xxx999338]OpenBook Visual C# Kap.26[/url] durchlesen. Relevant dürfte vor allem die Abschnitte "Manuelles Aktualisieren" mit ExecuteNonQuery sein. Du musst die einzelnen Daten aus Deiner ListView (anstelle von DataTable.Rows) holen.

Jürgen