myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Office-Technologien » [selbst gelöst] Excel Dokument "laden" und String in bool konvertieren
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

[selbst gelöst] Excel Dokument "laden" und String in bool konvertieren

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Kurdirektor Kurdirektor ist männlich
myCSharp.de-Mitglied

Dabei seit: 30.11.2018
Beiträge: 4
Entwicklungsumgebung: Visual Studio 2017


Kurdirektor ist offline

[selbst gelöst] Excel Dokument "laden" und String in bool konvertieren

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo zusammen,

ich bin aus der Sicht vieler hier sicher Anfänger und hoffe, dass darauf Rücksicht genommen wird falls einige Dinge für Experten zu einfach sein sollten :)

Ich habe eine sehr einfaches Programm geschrieben um ein bestehendes Exel Dokument zu beschrieben. Jetzt würde ich aber gerne eine Art "Lade" Funktion einbauen bei der man die Möglichkeit hat sich die Felder, die beschrieben werden können, auszulesen.

Ist das Feld im Dokument beschrieben soll dafür die dementsprechende Checkbox aktiviert werden.

Ich wollte es erst so lösen:

C#-Code:
if (excelWorkSheet.Cells[187, 2] = "X"))
            {
              checkBox40.Checked = true ;
            }

Habe aber vergessen, dass es ein String ist den ich Abfrage und nicht in Bool konvertiert werden kann ohne code. Ich habe schon einige google Ergebnisse probiert aber bin noch zu keinem Ergebnis gekommen.

Gibt es eventuell eine Möglichkeit den aktuellen Zustand der Checkboxen abzuspeichern und wiederherzustellen? Das wäre dann ja eine einfachere alternative als viel code zu schreiben um die Felder abzurufen.

*** EDIT ***

ich habe folgendes zum Testen versucht, ob mir dann die Checkbox aktiviert wird:

C#-Code:
if (excelWorkSheet.Cells[212, 12] == null)
            {
                checkBox64.Checked = true;
            }

Es wird kein Fehler ausgegeben aber auch nicht das gewünschte Ergebnis

Dieser Beitrag wurde 6 mal editiert, zum letzten Mal von Kurdirektor am 01.12.2018 01:08.

30.11.2018 18:48 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
hypersurf hypersurf ist männlich
myCSharp.de-Mitglied

Dabei seit: 16.10.2008
Beiträge: 494
Entwicklungsumgebung: VS Studio 2019, Android Studio
Herkunft: Münster


hypersurf ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ich versteh' die Frage nicht ganz, sehe aber einen Fehler in der ersten If-Abfrage:

C#-Code:
if (excelWorkSheet.Cells[187, 2] = "X"))
{
     checkBox40.Checked = true ;
}

Das muss

C#-Code:
if (excelWorkSheet.Cells[187, 2] == "X"))
{
     checkBox40.Checked = true ;
}

heißen (besser noch die Methode Equals verwenden).

Edit hat  hier Lektüre dazu gefunden, die Du Dir anschauen kannst.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von hypersurf am 30.11.2018 19:39.

30.11.2018 19:36 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Kurdirektor Kurdirektor ist männlich
myCSharp.de-Mitglied

Dabei seit: 30.11.2018
Beiträge: 4
Entwicklungsumgebung: Visual Studio 2017

Themenstarter Thema begonnen von Kurdirektor

Kurdirektor ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Zitat von hypersurf:
Das muss

C#-Code:
if (excelWorkSheet.Cells[187, 2] == "X"))
{
     checkBox40.Checked = true ;
}

heißen (besser noch die Methode Equals verwenden).

Hi,

Danke für deine Antwort!
Mein Fehler, ich habe es hier gerade selber geschrieben und anstatt == nur = geschrieben.

Ich habe mir die Informationen auf der Seite mal angeschaut aber finde für mein Problem nicht die richtige Lösung. Vielleicht kann ich es auch einfach noch nicht so umsetzen.

Wenn ich folgendes Versuche:

C#-Code:
private void button2_Click(object sender, EventArgs e)
        {
            // Deklarationen          
            string path = @"E:\300Series.xls";
            Microsoft.Office.Interop.Excel.Application excelAplication = null;
            Microsoft.Office.Interop.Excel.Workbook excelWorkBook = null;
            Microsoft.Office.Interop.Excel.Worksheet excelWorkSheet = null;

            // Öffnen der Mappe
            excelAplication = new Microsoft.Office.Interop.Excel.Application();
            System.Threading.Thread.Sleep(200);
            excelWorkBook = excelAplication.Workbooks.Open(path);
            excelWorkSheet =  (Microsoft.Office.Interop.Excel.Worksheet)excelWorkBook.Worksheets.get_Item(1);

            //Zuweisungen

            if (excelWorkSheet.Cells[212, 12] = "X")
            {
                checkBox64.Checked = true;
            }

            //Ende Zuweisungen

            //Schliessen der Mappe mit Abfrage ob überschrieben werden soll
            excelWorkBook.SaveAs(path, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal);
            excelWorkBook.Close();
            excelAplication.Quit();

            Marshal.FinalReleaseComObject(excelWorkSheet);
            Marshal.FinalReleaseComObject(excelWorkBook);
            Marshal.FinalReleaseComObject(excelAplication);
            excelAplication = null;
            excelWorkSheet = null;
        }

Dann kommt natürlich der Fehler:

Fehlermeldung:
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: "Der string-Typ kann nicht implizit in bool konvertiert werden."

Kann ich nicht eine string deklarieren und dann sagen dass, falls mein string "X" beinhaltet, die Checkbox aktiviert werden soll?.

C#-Code:
string myexcelstring = (excelWorkSheet.Cells[212, 12]);
            if (myexcelstring.Contains("X") == true)
            {
                checkBox64.Checked = true;
            }

Das gibt aber dann diese aus:

Fehlermeldung:
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: "Der System.__ComObject-Typ kann nicht implizit in string konvertiert werden."

Ich muss mich entschuldigen falls ich nicht alle Links mit "Basisinformationen" über das Porgrammieren lesen kann. Meine Familie und mein Job nehmen sehr viel Zeit in Anspruch aber wenn mir jemand Lösungsansätze zeigen kann, anstatt auf weitere Seiten zu verlinken, wäre ich sehr dankbar. Ich lerne schnell und kann den Code dann auch ohne das Hintergrundwissen interpretieren :). Vielen Dank im Voraus.

Kurdirektor hat dieses Bild (verkleinerte Version) angehängt:
Fehler.jpg
Volle Bildgröße

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Kurdirektor am 30.11.2018 20:25.

30.11.2018 20:09 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 14.280
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Joa, aber Du solltest wissen, dass Du nicht der einzige mit Familie und Job bist; sondern wir hier alle auch Familie, Freunde und Job haben und hier Leuten in unserer Freizeit helfen.
Daher nicht böse nehmen, dass wir Dir nicht Deine Lösung programmieren werden ;-)

Ansonsten sehe ich das wie hypersurf dass Deine Fragestellung nicht wirklich klar ist...
30.11.2018 20:44 Beiträge des Benutzers | zu Buddylist hinzufügen
Kurdirektor Kurdirektor ist männlich
myCSharp.de-Mitglied

Dabei seit: 30.11.2018
Beiträge: 4
Entwicklungsumgebung: Visual Studio 2017

Themenstarter Thema begonnen von Kurdirektor

Kurdirektor ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Ok, dann versuche ich mal die Frage, in Bezug auf meine andere Lösung, umzuformulieren!

Kann man, von einer Form, den aktuellen Status der Checkboxen abspeichern und wieder abrufen?

Meine eigentliche Frage war:
Wie kann ich es per C# umsetzen eine String Abfrage aus einem Excel Dokument in eine simple bool Rückgabe zu konvertieren?
30.11.2018 22:56 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Kurdirektor Kurdirektor ist männlich
myCSharp.de-Mitglied

Dabei seit: 30.11.2018
Beiträge: 4
Entwicklungsumgebung: Visual Studio 2017

Themenstarter Thema begonnen von Kurdirektor

Kurdirektor ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

*** gelöst ***

Umständlich per "optionaler" Lösung

C#-Code:
//Speichern und schliessen

                excelWorkBook.SaveAs(path, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal);
                excelWorkBook.Close();
            System.IO.File.WriteAllText(@"E:\Series240.txt", this.checkBox40.Checked.ToString());
            System.IO.File.WriteAllText(@"E:\Series241.txt", this.checkBox41.Checked.ToString());
            System.IO.File.WriteAllText(@"E:\Series242.txt", this.checkBox42.Checked.ToString());
            System.IO.File.WriteAllText(@"E:\Series243.txt", this.checkBox43.Checked.ToString());
            System.IO.File.WriteAllText(@"E:\Series244.txt", this.checkBox44.Checked.ToString());
            System.IO.File.WriteAllText(@"E:\Series245.txt", this.checkBox45.Checked.ToString());
            System.IO.File.WriteAllText(@"E:\Series246.txt", this.checkBox46.Checked.ToString());
            System.IO.File.WriteAllText(@"E:\Series247.txt", this.checkBox47.Checked.ToString());
            System.IO.File.WriteAllText(@"E:\Series248.txt", this.checkBox48.Checked.ToString());
            System.IO.File.WriteAllText(@"E:\Series249.txt", this.checkBox49.Checked.ToString());
            excelAplication.Quit();

                Marshal.FinalReleaseComObject(excelWorkSheet);
                Marshal.FinalReleaseComObject(excelWorkBook);
                Marshal.FinalReleaseComObject(excelAplication);
                excelAplication = null;
                excelWorkSheet = null;
             }



        private void Series2_Load(object sender, EventArgs e)
        {

        }

        private void button2_Click(object sender, EventArgs e)
        {

            string value = System.IO.File.ReadAllText(@"E:\Series240.txt");
            this.checkBox40.Checked = bool.Parse(value);
            string value2 = System.IO.File.ReadAllText(@"E:\Series241.txt");
            this.checkBox41.Checked = bool.Parse(value2);
            string value3 = System.IO.File.ReadAllText(@"E:\Series242.txt");
            this.checkBox42.Checked = bool.Parse(value3);
            string value4 = System.IO.File.ReadAllText(@"E:\Series243.txt");
            this.checkBox43.Checked = bool.Parse(value4);
            string value5 = System.IO.File.ReadAllText(@"E:\Series244.txt");
            this.checkBox44.Checked = bool.Parse(value5);
            string value6 = System.IO.File.ReadAllText(@"E:\Series245.txt");
            this.checkBox45.Checked = bool.Parse(value6);
            string value7 = System.IO.File.ReadAllText(@"E:\Series246.txt");
            this.checkBox46.Checked = bool.Parse(value7);
            string value8 = System.IO.File.ReadAllText(@"E:\Series247.txt");
            this.checkBox47.Checked = bool.Parse(value8);
            string value9 = System.IO.File.ReadAllText(@"E:\Series248.txt");
            this.checkBox48.Checked = bool.Parse(value9);
            string value1 = System.IO.File.ReadAllText(@"E:\Series249.txt");
            this.checkBox49.Checked = bool.Parse(value1);

        }

Jeden Status abspeichern und wieder abrufen

Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von Kurdirektor am 01.12.2018 00:59.

01.12.2018 00:33 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als ein Jahr.
Der letzte Beitrag ist älter als ein Jahr.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 01.11.2020 02:16