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



BeitragVerfasst: Mo 07.01.08 18:13 
So,

Es handelt sich hiebei um eine kleine Berechnung!

habe eine Form1 in der sich eine ComboBox und zwei Textboxen befinden!

Beim Starten der Form1 wird EXCEl geöffnet, und die Spalte A eines Files wird eingelesen! ( in der Spalte A befinden sich verschiedene Materialien)

Die zwei Textboxen dienen zur eingabe von zwei werten!
Durch drücken des Buttons "OK" erfolgt die berechnung.

Aber nun zu meinem Problem:

Da zur Berechnung nicht nur die Spalte A benötigt wird, möchte ich, dass nach der Auswahl in der Combobox die restlichen spalten eingelesen und in Variablen gschreiben werden.

Beispiel: Ich wähle in der Combobox das Material "XY" aus. Dies befindet sich im Zelle A5.
Zur berechnung benötige ich aber auch B5, C5 und D5.
Wie kann ich das Realisieren.

habe mal wo gelesen, das es mit einem "struct" recht gut funkionieren soll, weiß aber leider nicht wie ich da anfangen soll!
Kann mir da vielleicht, jemand Ansätze liefern?

habe das mit dem einlesen des Excel-Files so realisiert:

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:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
private void Form1_Load(object sender, EventArgs e)
        {
            //Starten von Excel, und einlesen der ersten Spalte "Material"
            // Die Excel Anwendung
            ApplicationClass xlApplication = new ApplicationClass();

            // Eine Referenz zum Workbook (dies ist die .XLS Datei)
            Workbook xlWorkbook = null;

            // Eine Referenz zum Worksheet (Arbeitsblatt)
            Worksheet xlWorksheet = null;

            // Einen Range (Bereich) mit den Daten
            Range xlRange = null;

            // 'false' um die Anwendung zu beschleunigen.
            // 'true' um den Vorgang sichtbar zu machen und Fehler anzuzeigen
            xlApplication.Visible = false;
            xlApplication.ScreenUpdating = false;
            xlApplication.DisplayAlerts = false;

            //Excel Datei öffnen
            xlWorkbook = xlApplication.Workbooks.Open("C:\\datenbank.xls"0true5""""true, XlPlatform.xlWindows, "\t"falsefalse0true0false);

            // Erste Arbeitsblatt wird gewählt
            xlWorksheet = (Worksheet)xlWorkbook.Worksheets[1];

            // Spalte A wird eingelesen (von A1 - A50)
            xlRange = xlWorksheet.get_Range("A1""A50");
            Array werte = (Array)xlRange.Cells.Value2;
            foreach (string wert in werte)
            {
                if (wert != null)
                {
                    //Werte in ComboBox hinzufügen
                    material.Items.Add(wert);
                }
            }
            // Range und Worksheet Objekte freigeben
            xlRange = null;
            xlWorksheet = null;

            // Falls noch offen, Excel Datei schliessen und
            // Workbook Objekt freigeben
            if (xlWorkbook != null)
                xlWorkbook.Close(falsenullnull);
            xlWorkbook = null;

            // Falls noch offen, Anwendung schliessen und
            // Application Objekt freigeben
            if (xlApplication != null)
                xlApplication.Quit();
            xlApplication = null;
        }
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 07.01.08 18:40 
Geht das nicht einfach mit dem xlWorksheet.get_Range, was Du schon verwendest? :gruebel:

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
2Good4You Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Di 08.01.08 06:33 
Da mit dem xlWorksheet.get_Range stimmt schon, aber bei mir scheiterts eher daran, wie ich die Werte aus den Zellen in Variablen schreibe!
Und dies soll ja erst passieren, wenn man ein Item in der ComboBox ausgewählt hat!

mfg
2Good4You Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mi 09.01.08 07:07 
also das mit der auswahl in der ComboBox habe ich nun!

da gibt es ein eigenes Event:

SelectedValueChanged, und SelectedIndex Changed!

Die Excel Zeilen kann ich mit xlWorksheet.get_Range laden, aber wie kann ich abfragen in welcher Zeile des Excel-Files das Item steht, dass ich in der ComboBox auswähle, damit ich die passenden Zellen einlesen kann?

mfg