Autor Beitrag
annold1986
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Do 11.03.10 12:42 
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
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);
                }
            
            }}}
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: 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.
ausblenden C#-Quelltext
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
annold1986 Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

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 
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
annold1986 Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: 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