Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
[selbst gelöst] Excel Dokument "laden" und String in bool konvertieren
Kurdirektor
myCSharp.de - Member



Dabei seit:
Beiträge: 5

Themenstarter:

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

beantworten | zitieren | melden

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:


 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:


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 .
private Nachricht | Beiträge des Benutzers
hypersurf
myCSharp.de - Member



Dabei seit:
Beiträge: 507
Herkunft: Münster

beantworten | zitieren | melden

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

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


Das muss

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 .
private Nachricht | Beiträge des Benutzers
Kurdirektor
myCSharp.de - Member



Dabei seit:
Beiträge: 5

Themenstarter:

beantworten | zitieren | melden

Zitat von hypersurf
Das muss

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:


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:
Fehler
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?.


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

Das gibt aber dann diese aus:
Fehler
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.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Kurdirektor am .
Attachments
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 15524
Herkunft: BW

beantworten | zitieren | melden

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...
private Nachricht | Beiträge des Benutzers
Kurdirektor
myCSharp.de - Member



Dabei seit:
Beiträge: 5

Themenstarter:

beantworten | zitieren | melden

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?
private Nachricht | Beiträge des Benutzers
Kurdirektor
myCSharp.de - Member



Dabei seit:
Beiträge: 5

Themenstarter:

beantworten | zitieren | melden

*** gelöst ***

Umständlich per "optionaler" Lösung


 //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 .
private Nachricht | Beiträge des Benutzers