my CSharp .de
»
Community
|
Diskussionsforum
Excel Zelle auslesen und Wert in TextBox ausgeben ???
nicknet
myCSharp.de - Member
Dabei seit:
21.12.2010
Beiträge: 9
Themenstarter:
[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?
22.12.2010 - 16:04
private Nachricht
|
Beiträge des Benutzers
Lennart
myCSharp.de - Member
Dabei seit:
25.08.2008
Beiträge: 416
Herkunft: Bawü
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:
Zitat von nicknet
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.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Lennart am 22.12.2010 - 16:12 .
22.12.2010 - 16:11
private Nachricht
|
Beiträge des Benutzers
nicknet
myCSharp.de - Member
Dabei seit:
21.12.2010
Beiträge: 9
Themenstarter:
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.
22.12.2010 - 20:00
private Nachricht
|
Beiträge des Benutzers
CyberHunter
myCSharp.de - Member
Dabei seit:
30.08.2007
Beiträge: 131
Herkunft: Österreich
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
22.12.2010 - 21:46
private Nachricht
|
Beiträge des Benutzers
user8744
myCSharp.de - Member
Dabei seit:
22.06.2007
Beiträge: 1.150
naja deine entscheidungsstruktur sieht auch etwas experimentell aus
ifworksheet.Cells[1, 2] == "")
{
}
{
}
Zitat 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.
22.12.2010 - 22:04
private Nachricht
|
Beiträge des Benutzers
nicknet
myCSharp.de - Member
Dabei seit:
21.12.2010
Beiträge: 9
Themenstarter:
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.
22.12.2010 - 22:21
private Nachricht
|
Beiträge des Benutzers
Lennart
myCSharp.de - Member
Dabei seit:
25.08.2008
Beiträge: 416
Herkunft: Bawü
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.
23.12.2010 - 09:02
private Nachricht
|
Beiträge des Benutzers