C# wyszukiwanie w Excelu OleDb

0

Witam
To mój pierwszy post na tym forum wiec proszę o wyrozumiałość. Jestem laikiem jesli chodzi o programowanie, potrzebuje pomocy
pewnie to jakas pierdoła ale ślęcze nad tym ktorys dzień i nie kumam.
Mam napisac program który bedzie wyszukiwał ciągi znaków w pliku Excela(załącznik). Zdecydowałem że najlepiej bedzie użyć OleBD.
Wyszukiwanie działa gdy ciąg wyszukiwany jest na sztywno w kodzie ale mam problem gdy próbuje wyszukać ciąg z TextBox-u wywala błąd adaptera. Każda rada i konstruktywna krytyka mile widziana :)

 
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;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            
        }

        private void Form1_Load(object sender, EventArgs e)
        {
        
        }

        private void button1_Click(object sender, EventArgs e)
        {
            
            
            OleDbConnection conn = new OleDbConnection();
            conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\users\wariat\Desktop\test1.xls" + @";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1;ImportMixedTypes=Text;TypeQuessRows=0""";

            OleDbCommand command = new OleDbCommand 
                (
               "SELECT * FROM [SHEET1$] WHERE Brand ='"+ this.textBox1.Text +"'", conn
                   
            // "SELECT * FROM [SHEET1$] WHERE Brand ='kolo'", conn 
                
                );

            DataSet UPC = new DataSet();
            OleDbDataAdapter adapter = new OleDbDataAdapter(command);
  
            adapter.Fill(UPC);
           

            dataGridView1.DataSource = UPC.Tables[0];


        }
    }
}
0
  1. Jaki jest błąd adaptera.
  2. Co wpisujesz do textBoxa. Upewniłeś się czy nie ma spacji?
  3. Podglądałeś zawartość command? Jak wygląda zapytanie po sklejeniu?
0

C# ma biblioteki to korzystania z Excela, może się tym zainteresujesz?
Poza tym, wydaje mi się, że nigdzie nie egzekwujesz swojego zapytania.

0

Spoko dzięki Panowie. Sprawdziłem składnie zapytania i dodałem biblioteki Excela i działa, ale tylko gdy szukam po kolumnie "Brand", nie sprawdzałem wcześniej wyszukiwania po kolumnie EAN/UPC. W takim przypadku gdy wpisywaniu np. "00568945287" w textBox1, wywala błąd adaptera

2422612424f468f8b85bc6.png

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 Microsoft.Office.Interop.Excel;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            
        }

        private void Form1_Load(object sender, EventArgs e)
        {
        
        }

        private void button1_Click(object sender, EventArgs e)
        {

            String text = this.textBox1.Text;

            OleDbConnection conn = new OleDbConnection();
            conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\users\wariat\Desktop\test1.xls;" + @";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1;ImportMixedTypes=Text;TypeQuessRows=0""";
            
            OleDbCommand command = new OleDbCommand 
                (
   
               "SELECT * FROM [SHEET1$] WHERE EAN/UPC ='00568945287'", conn
 
              //   "SELECT * FROM [SHEET1$] WHERE EAN/UPC ='"+text+"'", conn   
              
            
                );

            DataSet UPC = new DataSet();
            OleDbDataAdapter adapter = new OleDbDataAdapter(command);

            adapter.Fill(UPC);

            dataGridView1.DataSource = UPC.Tables[0];
        }
    }
}
 

1 użytkowników online, w tym zalogowanych: 0, gości: 1