Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - Daten von excel auslesen und filtern
annold1986 - Do 11.03.10 12:42
Titel: Daten von excel auslesen und filtern
Hallo bin neu hier und kenne mich mit C# und ADO.NET nicht wirklich aus.
also ich habe folgendes vor,ich versuche eine Exceltabelle mit Visual c# 2008 einzulesen und dann nur die zeilen in denen etwas drinsteht zu filtern und dann ausgeben zu lassen.
Tabelle sieht grob so aus:
zb Spalte : B
1 frei
2 TEXT
3 TEXT
4 frei
5 TEXT
nun will ich nur die zeilen ausgeben lassen in denen TEXT steht also B 2,3 und 5 usw...
folgendes hab ich schon geschrieben:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52:
| using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.OleDb; using System.Reflection;
namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); }
private void button1_Click(object sender, EventArgs e) {
string connetionString = null; OleDbConnection connection; OleDbDataAdapter oledbAdapter; int i; connetionString ="Provider=Microsoft.ACE.OLEDB.12.0;" + @"Data Source=U:\\tabelle1.xlsx;" + "Extended Properties=\"Excel 12.0;HDR=NO\";";
connection = new OleDbConnection(connetionString);
connection.Open(); DataTable dt = new DataTable(); oledbAdapter = new OleDbDataAdapter("select * from [Sheet1$B:B]",connection); oledbAdapter.Fill(dt);
oledbAdapter.Dispose(); connection.Close();
for (i = 0; i <= dt.Rows.Count - 1; i++) { MessageBox.Show (dt.Rows[i].ItemArray[0] + "" +dt.TableName); } }}} |
danielf - Do 11.03.10 14:36
Hallo,
ich kenne mich nicht mit dem OleDbDataAdapte aus, aber so wie es für mich aussiehst frägst du alle Einträge von dem Sheet1 Spalte B aus?
Sprich es Popen 5 MsgBoxen auf.. die erste leer, 2 mal Text, leer und wieder Text. und du weißt nur nicht wie du nur Text rausfilterst?
Falls dies so ist kannst du in deiner for-Schleife einfach überprüfen ob der string ungleich leer oder null ist.
C#-Quelltext
1: 2: 3: 4: 5:
| if (!string.IsNullOrEmpty(dt.Rows[i].ItemArray[0].toString()) { MessageBox.Show (dt.Rows[i].ItemArray[0] + "" +dt.TableName); } |
Ich hoffe das hilft dir weiter.
Gruß Daniel
annold1986 - Do 11.03.10 15:23
Haargenau das war mein problem.
vielen dank hat super geklappt.
gibt es auch eine möglichkeit den Spaltennamen dazu auszugeben also dass z.b. angezeigt wird: [B5 TEXT] usw...????
JüTho - Do 11.03.10 15:37
Hallo und noch :welcome:
Für die Abfrage per Oledb wird ja SELECT verwendet, wie du es auch machst. Dazu gibt es eine WHERE-Bedingung, in der z.B. "Spalte ungleich leer" eingetragen wird. Aber wie das beim Excel-Zugriff aussieht, weiß ich nicht (deswegen hatte ich bisher nicht geantwortet).
Den Spaltennamen bekommst du über DataTable.Columns[i].
Übrigens: Eine Einführung in Datenbanken gibt es unter
OpenBook VC# [
http://openbook.galileocomputing.de/visual_csharp] Kap. 25 ff.
Gruß Jürgen
annold1986 - Fr 12.03.10 09:58
wie sieht es denn bei verbundenen zellen aus also z.b.
hab ich die Zellen A1 und B1 miteinander verbunden. nun steht der text ja nur in der Zelle A1 wenn ich auf B1 zugreife steht nichts drin.
kann ich das irgendwie so programmieren dass der text dann auch bei B1 angezeigt wird?? oder von B1 dann autmatisch auf A1 zugreift??
vielen dank im vorraus
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!