Excel makro in VB.NET umsetzen

Hallo leute,

1.
ich habe eine Excel Datei in der von mir bestimmte werte eingetragen werden, das prinzip könnt ihr euch als Matrix vorstellen in der X und Y werte eingetragen werden. Dahinter liegt ein Makro was daraus eine XML datei erzeugt mit der ich dann weiterverfahre.

Das selbe prinzip möchte ich mit VB.NET realisieren. Ich stell mich nur etwas "Braun" an weil ich nicht weis was ich als Steuerelement verwenden kann wo ich die werte (X,Y) eintragen kann....Datagrid...oder Excel einbinden.... usw. Ich komm zu keinen nenner...

Was, und wie würdet ihr das machen...

2.
Habe mal versucht eine Exceldatei einzubinden, und habe die anschließend wieder gelöscht. Wollte es noch mal versuchen und bei einbinden des steuerelements kommt der Fehler ( "Verweis auf Typenbiliothek ist schon vorhanden, löschen die die OWC10")....... Naja klar ne.....bloss wo....

Danke im vorraus.
 
Hi davejarjarbinks,

wenn es wirklich nur darum geht ein paar Werte in ein Grid einzutragen um anschließend eine XML zu erzeugen, dann würde ich das komplett ohne Excel machen.

Ich würde mir im Code eine DataTable definieren, je eine Spalte für die X und Y Werte.
Diese DataTable hängst du dann an die DataSource von einem DataGridView.

Die Werte, die du nun im DGV eintippst werden in der DT gespeichert. Wunderbar oder?!

Deinem Button "SaveAsXML" verpasst du nun ein wenig Code, der über 'ne For Each Schleife die DT durchläuft und die XML Datei erzeugt.

Ist das soweit verständlich?! Wenn ich heute Abend Zeit finden sollte, kann ich gerne mal ein paar Zeilen Code dafür schreiben (falls du möchtest). ;-)

Gruß,
Sebastian
 
Wäre net wenn du paar codezeilen Texten könnetst. Die generierung der XML habe ich schon geschrieben, mir fehlt nur noch das Dataview. Wäre schön wenn du mir zeigen könntest wie das funktioniert.

Danke
 
ich habe hier mal ein wenig Code zusammengestellt. Damit er läuft musst du einen Button und ein DataGridView auf dem Form platzieren.

PHP:
        //DataTable mit dem Namen "Matrix" erzeugen... wake up, Neo!
        private DataTable dataTable = new DataTable("Matrix");

        private void Form1_Load(object sender, EventArgs e)
        {
            //Spalten in der DataTable anlegen
            dataTable.Columns.Add("X", typeof(System.Int32));
            dataTable.Columns.Add("Y", typeof(System.Int32));

            //Bindung herstellen
            dataGridView1.DataSource = dataTable;
            dataGridView1.ReadOnly = false;
        }

        //Auswertung: hier mal über den Button
        private void button1_Click(object sender, EventArgs e)
        {
            foreach (DataRow dr in dataTable.Rows)
            {
                //Wert für X und Y einfach mal hier in eine Variable schreiben
                //hier sollte nun das XML aufgebaut werden.
                //wenn es nur darum geht das Schema der DataTable samt Daten zu speichern
                //kann man auch (siehe unten) verwenden.
                int valueX = Convert.ToInt32(dr["X"]);
                int valueY = Convert.ToInt32(dr["Y"]);
            }

            //würde direkt ein XML der DataTable erzeugen
            dataTable.WriteXml("dateiname.endung");
        }

Viel spaß
 
Hallo FwDonnerbalken,

danke für deine schnelle hilfe.

Leider noch nicht ganz das was ich brauch. Es sollen nach öffen des Pogrammes sagen wir mal 10x10 Felder zu sehen sein in denen der Benutzer die daten einträgt. Also quasi 10 mal "X" Horizontal und 10 mal "Y" Vertikal

Danke nochmals
 
Moin,

das ist ja grundsätzlich auch kein Problem... hättest das vielleicht was früher sagen sollen :eek:
Du kannst ja deine DataTable mit den 10 Spalten anlegen, prinzipiell auch über eine Schleife dynamisch, lies dich hier mal ein wenig durch die MSDN-Dokumentation.
Bzgl. der 10 Zeilen kannst du mit dem Aufruf

PHP:
for (int i = 0; i < 10; i++)
{
   //Neue Zeile erzeugen
   DataRow dr = dataTable.NewRow();

   //Zeile an DT anhängen
   dataTable.Rows.Add(dr);
}

eine neue Zeile erzeugen, die dann an die DataTable angehangen wird.
Das DataGridView sollte über eine Property verfügen, in der du das weitere Hinzufügen von Zeilen verhindern kannst.

Gruß,
Sebastian
 
Zuletzt bearbeitet:
Zurück