Laden...
K
Kurdirektor myCSharp.de - Member
Field Service Engineer Dabei seit 30.11.2018 4 Beiträge
Benutzerbeschreibung

Forenbeiträge von Kurdirektor Ingesamt 4 Beiträge

01.12.2018 - 00:33 Uhr

*** 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

30.11.2018 - 22:56 Uhr

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 - 20:09 Uhr

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


 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.

30.11.2018 - 18:48 Uhr

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