Delphi-Forum.de Delphi-Library.de
C-Sharp-Forum.de C-Sharp-Library.de
Registrieren Login Suche Hilfe Sitemap
[3.5] Daten von excel auslesen und filtern
spacer
Autor Nachricht
annold1986
Hält's aus hier

Beiträge: 3
Dabei seit: 11.03.2010



BeitragVerfasst: Do 11.03.10 12:42 
.NET Version: 3.5
Antworten mit Zitat Beitrag melden
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:
ausblenden volle Höhe C#-Quelltext markieren
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);



//Einlesen der Daten....
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);
}

}}}
Private Nachricht sendenPosting in privater Nachricht zitieren
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star

Beiträge: 900
Erhaltene Danke: 14
Dabei seit: 28.01.2009
Wohnort: Stuttgart

Windows XP
C# (VS 2008)
BeitragVerfasst: Do 11.03.10 14:36  Antworten mit Zitat Beitrag melden
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.
ausblenden C#-Quelltext markieren
1:
2:
3:
4:
5:
if (!string.IsNullOrEmpty(dt.Rows[i].ItemArray[0].toString())
{
// gibt nur nicht leere Felder aus
MessageBox.Show (dt.Rows[i].ItemArray[0] + "" +dt.TableName);
}


Ich hoffe das hilft dir weiter.

Gruß Daniel
Private Nachricht sendenPosting in privater Nachricht zitieren Webseite dieses Mitglieds besuchen
annold1986
Hält's aus hier

(Threadstarter)

Beiträge: 3
Dabei seit: 11.03.2010



BeitragVerfasst: Do 11.03.10 15:23  Antworten mit Zitat Beitrag melden
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...????
Private Nachricht sendenPosting in privater Nachricht zitieren
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starhalf offtopic star

Beiträge: 2015
Erhaltene Danke: 2
Dabei seit: 24.08.2006
Wohnort: Berlin

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Do 11.03.10 15:37  Antworten mit Zitat Beitrag melden
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# Kap. 25 ff.

Gruß Jürgen
Private Nachricht sendenPosting in privater Nachricht zitieren Webseite dieses Mitglieds besuchen
annold1986
Hält's aus hier

(Threadstarter)

Beiträge: 3
Dabei seit: 11.03.2010



BeitragVerfasst: Fr 12.03.10 09:58  Antworten mit Zitat Beitrag melden
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
Private Nachricht sendenPosting in privater Nachricht zitieren
Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.


Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.
Beiträge vom vorherigen Thema anzeigen:   
home home