[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?
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.
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.
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
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.
Danke das funzt,
Programm läuft stabil durch.
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.
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.