Laden...

Excel Zelle auslesen und Wert in TextBox ausgeben ???

Erstellt von nicknet vor 13 Jahren Letzter Beitrag vor 13 Jahren 21.708 Views
N
nicknet Themenstarter:in
9 Beiträge seit 2010
vor 13 Jahren
Excel Zelle auslesen und Wert in TextBox ausgeben ???

[FAQ] Office (Word, Excel, Outlook, ...) in eigenen Anwendungen verwenden Hallo @ all,

Habe folgendes Problem,...

if (worksheet.Cells[1, 2] == "")

{
  // egal mach nichts weil Zelle des Tabellenblattes ist leer
}
{
//ist nicht leer? dann Inhalt Convertieren in String nach TextBox.Sowiso
textBox2.Text = worksheet.Cells[1, 2].Value.ToString();
}

Kann jemand helfen? Weil so klappt es nicht.

lg nicknet

Oder gibt es eine Rutine die man anwenden kann, Weil ich ein paar hundert Zellen abfragen muss?

L
416 Beiträge seit 2008
vor 13 Jahren

Lese die Daten in eine geeignete Datenstruktur (zb Dataset) ein und zeige sie dann in einem GridView und nicht in hunderten von Textboxen an.
"So klappt es nicht" ist übrigens ziemlich schwammig. Was klappt nicht? Was willst du erreichen?

edit:

Oder gibt es eine Rutine die man anwenden kann, Weil ich ein paar hundert Zellen abfragen muss?

Ich vermute eine Schleife ist das was du suchst.

Gelöschter Account
vor 13 Jahren

Weil so klappt es nicht.

Was klappt denn nicht ???
Tritt eine Exception auf ?

N
nicknet Themenstarter:in
9 Beiträge seit 2010
vor 13 Jahren

Hallo Sebastian und Lennart

Dieser Teil

textBox2.Text = worksheet.Cells[1, 2].Value.ToString();

trägt die Daten in die Textbox.
Aber nur so lange in der Zelle auch Daten sind, egal ob Text oder Ziffern.

Ist aber eine Zelle leer, bleibt das Programm an dieser hängen und arbeitet nicht weiter, Ohne Fehlermeldung!

Deshalb habe ich versucht eine if Schleife zu setzen.
an dieser scheitere ich gerade.

Zum Dataset, kenn mich damit nicht so aus.. bin schon neuling.

Das Programm erstellt und verwaltet eine bzw. mehrere Exceldatei/en , die Daten werden nach und nach vom User eingegeben wobei nicht jedes Feld Daten erhält.
Deshalb gibt es in Excel ab und an eine "Leerzelle".
Wenn das Programm aber die Datei öffnen und auslesen soll, benötige ich auch die Info das in dieser Zelle nichts eingegeben wurde.

C
131 Beiträge seit 2007
vor 13 Jahren

versuch mal statt:


if (worksheet.Cells[1, 2] == "")
{}

dieses:


textBox2.Text = worksheet.Cells[1, 2].Value == null ? "-" : worksheet.Cells[1, 2].Value.ToString();

Gruss
CyberHunter

Gelöschter Account
vor 13 Jahren

naja deine entscheidungsstruktur sieht auch etwas experimentell aus

ifworksheet.Cells[1, 2] == "")
{

}

{

}

Ist aber eine Zelle leer, bleibt das Programm an dieser hängen und arbeitet nicht weiter, Ohne Fehlermeldung!

Bist du dir da sicher ? 8o
Wenn du willst häng dein Projekt hier einfach mal gepackt als Anhang mit dran.

N
nicknet Themenstarter:in
9 Beiträge seit 2010
vor 13 Jahren

Danke das funzt,
Programm läuft stabil durch.

N
nicknet Themenstarter:in
9 Beiträge seit 2010
vor 13 Jahren

Hi Sebastian, kann ja auch keine Fehlermeldung kommen,
habe sie ja kommentiert, ...
Das ist der Grundsource
der Später noch um bis zu tausend Eingaben erweitert wird.
leider immer nur von und nach Textboxen.

             OpenFileDialog openFileDialog1 = new OpenFileDialog();

            openFileDialog1.InitialDirectory = System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
            openFileDialog1.Filter = "xls files (*.xls)|*.xls|All files (*.*)|*.*";
            openFileDialog1.FilterIndex = 1;
            openFileDialog1.Title = "Öffnen einer Datei ...";
            openFileDialog1.RestoreDirectory = true;

            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    //if ((openFileDialog1.FileName) != null) 

                    //{

                    // Excel-Instanz erzeugen und sichtbar schalten
                    // Wenn codierung fertig auf false setzen!
                    Microsoft.Office.Interop.Excel.Application excel =
                       new Microsoft.Office.Interop.Excel.Application();
                    excel.Visible = true;


                    // Arbeitsmappe einlesen
                    string filename = Path.Combine(openFileDialog1.FileName);
                    Microsoft.Office.Interop.Excel.Workbook workbook = excel.Workbooks.Open(filename);


                    // Das erste Arbeitsblatt referenzieren Grunddaten einträge!
                    Microsoft.Office.Interop.Excel.Worksheet worksheet =
                       (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];


                    // Werte aus den Zellen zurücklesen und in den entsprechenden textBoxen ausgeben
                    //Werte werden als String gelesen und müssen als String übergeben werden!

                    //if (worksheet.Cells[1, 1] == "") { }
                    //{
                    textBoxlm1.Text = worksheet.Cells[1, 1].Value == null ? "-" : worksheet.Cells[1, 1].Value.ToString();
                    //}
                    //if (worksheet.Cells[1, 2] != "") 
                    //{
                    //    textBoxlm2.Text = "";
                    //}
                    //{
                    //    textBoxlm2.Text = worksheet.Cells[1, 2].Value.ToString();
                    //}
                    textBoxlm2.Text = worksheet.Cells[1, 2].Value == null ? "-" : worksheet.Cells[1, 2].Value.ToString(); 

                    textBoxlm3.Text = (worksheet.Cells[1, 3]).Value.ToString();
                    textBoxlm4.Text = (worksheet.Cells[1, 4]).Value.ToString();
                    textBoxlm5.Text = (worksheet.Cells[1, 5]).Value.ToString();
                    textBoxlm6.Text = (worksheet.Cells[1, 6]).Value.ToString();
                    textBoxlm7.Text = (worksheet.Cells[1, 7]).Value.ToString();
                    textBoxlm8.Text = (worksheet.Cells[1, 8]).Value.ToString();
                    textBoxlm9.Text = (worksheet.Cells[1, 9]).Value.ToString();
                    textBoxlm10.Text = (worksheet.Cells[1, 10]).Value.ToString();
                    textBoxlm11.Text = (worksheet.Cells[1, 11]).Value.ToString();
                    textBoxlm12.Text = (worksheet.Cells[1, 12]).Value.ToString();
                    textBoxlm13.Text = (worksheet.Cells[1, 13]).Value.ToString();
                    textBoxlm14.Text = (worksheet.Cells[1, 14]).Value.ToString();
                    textBoxlm116.Text = (worksheet.Cells[1, 15]).Value.ToString();

                    textBoxlm15.Text = (worksheet.Cells[2, 1]).Value.ToString();
                    textBoxlm16.Text = (worksheet.Cells[2, 2]).Value.ToString();
                    textBoxlm17.Text = (worksheet.Cells[2, 3]).Value.ToString();
                    textBoxlm18.Text = (worksheet.Cells[2, 4]).Value.ToString();
                    textBoxlm19.Text = (worksheet.Cells[2, 5]).Value.ToString();
                    textBoxlm20.Text = (worksheet.Cells[2, 6]).Value.ToString();
                    textBoxlm21.Text = (worksheet.Cells[2, 7]).Value.ToString();
                    textBoxlm22.Text = (worksheet.Cells[2, 8]).Value.ToString();
                    textBoxlm23.Text = (worksheet.Cells[2, 9]).Value.ToString();
                    textBoxlm24.Text = (worksheet.Cells[2, 10]).Value.ToString();
                    textBoxlm25.Text = (worksheet.Cells[2, 11]).Value.ToString();
                    textBoxlm26.Text = (worksheet.Cells[2, 12]).Value.ToString();
                    textBoxlm27.Text = (worksheet.Cells[2, 13]).Value.ToString();
                    textBoxlm108.Text = (worksheet.Cells[2, 14]).Value.ToString();
                    textBoxlm109.Text = (worksheet.Cells[2, 15]).Value.ToString();
                    textBoxlm110.Text = (worksheet.Cells[2, 16]).Value.ToString();
                    textBoxlm111.Text = (worksheet.Cells[2, 17]).Value.ToString();
                    textBoxlm112.Text = (worksheet.Cells[2, 18]).Value.ToString();
                    textBoxlm113.Text = (worksheet.Cells[2, 19]).Value.ToString();


                    textBoxlm30.Text = (worksheet.Cells[3, 1]).Value.ToString();
                    textBoxlm31.Text = (worksheet.Cells[3, 2]).Value.ToString();
                    textBoxlm32.Text = (worksheet.Cells[3, 3]).Value.ToString();
                    textBoxlm33.Text = (worksheet.Cells[3, 4]).Value.ToString();
                    textBoxlm34.Text = (worksheet.Cells[3, 5]).Value.ToString();
                    textBoxlm35.Text = (worksheet.Cells[3, 6]).Value.ToString();
                    textBoxlm36.Text = (worksheet.Cells[3, 7]).Value.ToString();
                    textBoxlm37.Text = (worksheet.Cells[3, 8]).Value.ToString();
                    textBoxlm38.Text = (worksheet.Cells[3, 9]).Value.ToString();
                    textBoxlm39.Text = (worksheet.Cells[3, 10]).Value.ToString();

                    textBoxlm40.Text = (worksheet.Cells[4, 1]).Value.ToString();
                    textBoxlm41.Text = (worksheet.Cells[4, 2]).Value.ToString();
                    textBoxlm42.Text = (worksheet.Cells[4, 3]).Value.ToString();
                    textBoxlm43.Text = (worksheet.Cells[4, 4]).Value.ToString();
                    textBoxlm44.Text = (worksheet.Cells[4, 5]).Value.ToString();
                    textBoxlm45.Text = (worksheet.Cells[4, 6]).Value.ToString();
                    textBoxlm46.Text = (worksheet.Cells[4, 7]).Value.ToString();
                    textBoxlm47.Text = (worksheet.Cells[4, 8]).Value.ToString();
                    textBoxlm48.Text = (worksheet.Cells[4, 9]).Value.ToString();
                    textBoxlm49.Text = (worksheet.Cells[4, 10]).Value.ToString();
                    textBoxlm50.Text = (worksheet.Cells[4, 11]).Value.ToString();
                    textBoxlm51.Text = (worksheet.Cells[4, 12]).Value.ToString();

                    //// Das zweite Arbeitsblatt referenzieren für Werte Rezeptdaten!
                    //Microsoft.Office.Interop.Excel.Worksheet worksheettwo =
                    //   (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[2];


                                        textBoxhd52.Text = (worksheet.Cells[11, 1]).Value.ToString();
                    textBoxhd90.Text = (worksheet.Cells[11, 2]).Value.ToString();
                    textBoxhd91.Text = (worksheet.Cells[11, 3]).Value.ToString();
                    textBoxhd92.Text = (worksheet.Cells[11, 4]).Value.ToString();
                    textBoxhd93.Text = (worksheet.Cells[11, 5]).Value.ToString();
                    textBoxhd94.Text = (worksheet.Cells[11, 6]).Value.ToString();
                    textBoxhd95.Text = (worksheet.Cells[11, 7]).Value.ToString();
                    textBoxhd96.Text = (worksheet.Cells[11, 8]).Value.ToString();
                    textBoxhd97.Text = (worksheet.Cells[11, 9]).Value.ToString();
                    textBoxhd98.Text = (worksheet.Cells[11, 10]).Value.ToString();
                    textBoxhd99.Text = (worksheet.Cells[11, 11]).Value.ToString();
                    textBoxhd100.Text = (worksheet.Cells[11, 12]).Value.ToString();
                    textBoxhd101.Text = (worksheet.Cells[11, 13]).Value.ToString();
                    textBoxhd102.Text = (worksheet.Cells[11, 14]).Value.ToString();
                    textBoxhd105.Text = (worksheet.Cells[11, 15]).Value.ToString();

                    textBoxhd77.Text = (worksheet.Cells[12, 1]).Value.ToString();
                    textBoxhd78.Text = (worksheet.Cells[12, 2]).Value.ToString();
                    textBoxhd79.Text = (worksheet.Cells[12, 3]).Value.ToString();
                    textBoxhd80.Text = (worksheet.Cells[12, 4]).Value.ToString();
                    textBoxhd81.Text = (worksheet.Cells[12, 5]).Value.ToString();
                    textBoxhd82.Text = (worksheet.Cells[12, 6]).Value.ToString();
                    textBoxhd83.Text = (worksheet.Cells[12, 7]).Value.ToString();
                    textBoxhd84.Text = (worksheet.Cells[12, 8]).Value.ToString();
                    textBoxhd85.Text = (worksheet.Cells[12, 9]).Value.ToString();
                    textBoxhd86.Text = (worksheet.Cells[12, 10]).Value.ToString();
                    textBoxhd87.Text = (worksheet.Cells[12, 11]).Value.ToString();
                    textBoxhd88.Text = (worksheet.Cells[12, 12]).Value.ToString();
                    textBoxhd89.Text = (worksheet.Cells[12, 13]).Value.ToString();
                    textBoxhd103.Text = (worksheet.Cells[12, 14]).Value.ToString();
                    textBoxhd104.Text = (worksheet.Cells[12, 15]).Value.ToString();
                    textBoxhd114.Text = (worksheet.Cells[12, 16]).Value.ToString();
                    textBoxhd115.Text = (worksheet.Cells[12, 17]).Value.ToString();

                    textBoxhd65.Text = (worksheet.Cells[13, 1]).Value.ToString();
                    textBoxhd66.Text = (worksheet.Cells[13, 2]).Value.ToString();
                    textBoxhd67.Text = (worksheet.Cells[13, 3]).Value.ToString();
                    textBoxhd68.Text = (worksheet.Cells[13, 4]).Value.ToString();
                    textBoxhd69.Text = (worksheet.Cells[13, 5]).Value.ToString();
                    textBoxhd70.Text = (worksheet.Cells[13, 6]).Value.ToString();
                    textBoxhd71.Text = (worksheet.Cells[13, 7]).Value.ToString();
                    textBoxhd72.Text = (worksheet.Cells[13, 8]).Value.ToString();
                    textBoxhd73.Text = (worksheet.Cells[13, 9]).Value.ToString();
                    textBoxhd74.Text = (worksheet.Cells[13, 10]).Value.ToString();

                    textBoxhd53.Text = (worksheet.Cells[14, 1]).Value.ToString();
                    textBoxhd54.Text = (worksheet.Cells[14, 2]).Value.ToString();
                    textBoxhd55.Text = (worksheet.Cells[14, 3]).Value.ToString();
                    textBoxhd56.Text = (worksheet.Cells[14, 4]).Value.ToString();
                    textBoxhd57.Text = (worksheet.Cells[14, 5]).Value.ToString();
                    textBoxhd58.Text = (worksheet.Cells[14, 6]).Value.ToString();
                    textBoxhd59.Text = (worksheet.Cells[14, 7]).Value.ToString();
                    textBoxhd60.Text = (worksheet.Cells[14, 8]).Value.ToString();
                    textBoxhd61.Text = (worksheet.Cells[14, 9]).Value.ToString();
                    textBoxhd62.Text = (worksheet.Cells[14, 10]).Value.ToString();
                    textBoxhd63.Text = (worksheet.Cells[14, 11]).Value.ToString();
                    textBoxhd64.Text = (worksheet.Cells[14, 12]).Value.ToString();

                    // Die Arbeitsmappe schließen, ohne diese zu speichern
                    workbook.Close(false);
                    excel.Quit();


                    //}
                }
                catch (Exception ex)
                {
                    //System.Windows.Forms.MessageBox.Show("Fehler: Kann Datei nicht lesen. Original Fehler: \n" + ex.Message);
                    //workbook.Close(false);
                    //excel.Quit();
                }

So sieht das Datei öffnen menue bislang aus.
Danke nochmal an alle die sich mit Gedanken gemacht haben.

L
416 Beiträge seit 2008
vor 13 Jahren

Die Zeit die du damit verschwendest das alles von Hand anzupassen wäre besser damit verbracht dich über die Stichworte zu informieren die ich dir eingangs gab.