[ negative7 @ 11.02.2011. 22:03 ] @
Imam dvije tablice u excelu i pokusavam da neka polja ubacim u datagrid i evo sto mi se desava:

Code:

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 MyTry
{
    public partial class Form1 : Form
    {
        BindingSource tblNameBs = new BindingSource();

        public Form1()
        {
            InitializeComponent();
        }

        private void btnImport_Click(object sender, EventArgs e)
        {
            OleDbConnection conn = new OleDbConnection();
            conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Documents and Settings\Cp\My Documents\MyExample.xlsm" + @";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1;ImpoertMixedTypes=Text;TypeGuessRows=0""";

            string comm = "Select VodicBase.FazaVodica,VodicBase.VisinaVodica,VodicBase.RazmaciVodicaOdstupa,Vodicprop.RadijusVodica,VodicProp.SpecificniElektricniOtporVodica,VodicPropUnutrasnjiOtpor FROM VodicBase,VodicProp";



            OleDbCommand command = new OleDbCommand(comm, conn);

            DataSet dsDvds = new DataSet();

            OleDbDataAdapter adapter = new OleDbDataAdapter(command);


            OleDbCommandBuilder Builder = new OleDbCommandBuilder(adapter);


            adapter.Fill(dsDvds);


            dtgViewTab.DataSource = dsDvds.Tables[0];
            tblNameBs.DataSource = dsDvds.Tables[0];

    
        }

    }
}

VodicBase i VodicProp su mi dvi tablice u istom sheetu
Gresku javlja ovdje -->"adapter.Fill(dsDvds);"
--The Microsoft Office Access database engine could not find the object 'VodicBase'. Make sure the object exists and that you spell its name and the path name correctly.

Jeli zna netko kako da rijesim stvar,gledo sam po netu ima nesto o ovome tipu problema ali nisam shvatio.
[ MarkoBalkan @ 14.02.2011. 17:40 ] @
umjesto tvoje dvije tablice stavi ime sheeta.
jer kad čitaš iz excela jedan sheet predstavlja jednu tablicu.
za detalje pogledaj

http://www.connectionstrings.com/excel-2007

kad radiš select, pišeš
select * from [tvoj_sheet$]

drugi način je da excelu pristupaš preko com objecta.

otprilike ovako
http://www.daniweb.com/forums/thread29055.html

Code:

xlApp = New Excel.ApplicationClass
xlWorkBook = xlApp.Workbooks.Open("c:\vbexcel.xlsx")
xlWorkSheet = xlWorkBook.Worksheets("sheet1")

range = xlWorkSheet.UsedRange

For rCnt = 1 To range.Rows.Count
For cCnt = 1 To range.Columns.Count
Obj = CType(range.Cells(rCnt, cCnt), Excel.Range)
MsgBox(Obj.value)
Next
Next
[ negative7 @ 15.02.2011. 09:08 ] @
Ok thx,Kako imam vise tablica u sheetu1 moram ici preko [MyRangeName]. E sad mi je problem sto ne mogu prikazat te dvije tablice u jednom datagridu jer mi tablice u excelu nisu povezane(mislim mogu ih ja prikazat ali uparit ce mi nevezane podatke).Pa za dvi tablice u jednom sheetu trebam 2 datagrida sto i nije mi neki problem ali jeli mi to znaci da moram imat 2 dataseta i dva adaptera kosto sma ja to realiziro,pomalo mi glupo izgleda pa pitam:

Code:

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 MyTry
{
    public partial class Form1 : Form
    {
        BindingSource tblNameBs = new BindingSource();
        
        public Form1()
        {
            InitializeComponent();
        }

        private void btnImport_Click(object sender, EventArgs e)
        {
            try
            {
                OleDbConnection conn = new OleDbConnection();
                conn.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Documents and Settings\Cp\My Documents\MyExample.xlsm" + @";Extended Properties=""Excel 12.0 Macro;HDR=Yes;IMEX=1;ImpoertMixedTypes=Text;TypeGuessRows=0""";

                string comm = "select * from [MyRangeNameOne]";

                String comm2 = "select * from [MyRangeNameTwo]";

                OleDbCommand command = new OleDbCommand(comm, conn);
                OleDbCommand command2 = new OleDbCommand(comm2, conn);


                DataSet dsDvds = new DataSet();
                DataSet dsDvds2 = new DataSet();

                OleDbDataAdapter adapter = new OleDbDataAdapter(command);
                OleDbDataAdapter adapter2 = new OleDbDataAdapter(command2);

                OleDbCommandBuilder Builder = new OleDbCommandBuilder(adapter);
                OleDbCommandBuilder Builder2 = new OleDbCommandBuilder(adapter2);

                adapter.Fill(dsDvds);
                

                dtgViewTab1.DataSource = dsDvds.Tables[0];
                tblNameBs.DataSource = dsDvds.Tables[0];

           

                adapter2.Fill(dsDvds2);
                
                dtgViewTab2 .DataSource = dsDvds2.Tables[0];
                
                tblNameBs.DataSource = dsDvds2.Tables[0];
          
            }

            catch (Exception ex)
            {
                MessageBox.Show("Error Occurs: "+ex .ToString ());
            }
    
        }
    }
}



[Ovu poruku je menjao negative7 dana 15.02.2011. u 11:28 GMT+1]

[Ovu poruku je menjao negative7 dana 15.02.2011. u 11:29 GMT+1]

[Ovu poruku je menjao negative7 dana 15.02.2011. u 11:31 GMT+1]

[Ovu poruku je menjao negative7 dana 15.02.2011. u 11:34 GMT+1]
[ MarkoBalkan @ 15.02.2011. 15:53 ] @
ja sam napisao onako kako se radi, jedan sheet=jedna tablica i tu priča završava.
ako imaš podatke koji moraju biti u vezi, onda uzmeš access ili neki db server ili
možeš kreirati i jedan dataset i u datasetu kreirati dvije tablice sa relacijama.

treba ti jedna konekcija, dva query-a, jedan dataset i to je to.


[ negative7 @ 15.02.2011. 19:53 ] @
Ovde pricamo o excel-u i C# nikakav Access.
Od mene se trazi iskljucivo Excel nista access.
Zadnje pitanje mi i dalje stoji,osim ako
Citat:
možeš kreirati i jedan dataset i u datasetu kreirati dvije tablice sa relacijama.

treba ti jedna konekcija, dva query-a, jedan dataset i to je to.
se nije osnosilo na Excel,a ja msilim da se odnosilo npr na Acces sto mi ne dolazi nikako u slucaj.
[ MarkoBalkan @ 15.02.2011. 20:40 ] @
Citat:
negative7: Ovde pricamo o excel-u i C# nikakav Access.
Od mene se trazi iskljucivo Excel nista access.
Zadnje pitanje mi i dalje stoji,osim ako se nije osnosilo na Excel,a ja msilim da se odnosilo npr na Acces sto mi ne dolazi nikako u slucaj.





Citat:
negative7: Ok thx,Kako imam vise tablica u sheetu1 moram ici preko [MyRangeName]. E sad mi je problem sto ne mogu prikazat te dvije tablice u jednom datagridu jer mi tablice u excelu nisu povezane(mislim mogu ih ja prikazat ali uparit ce mi nevezane podatke).Pa za dvi tablice u jednom sheetu trebam 2 datagrida sto i nije mi neki problem ali jeli mi to znaci da moram imat 2 dataseta i dva adaptera kosto sma ja to realiziro,pomalo mi glupo izgleda pa pitam:


odgovor na tvoje pitanje:

stavi svaku tablicu u jedan sheet, kreiraj dataset sa dvije tablice i relacijom.

treba ti jedna konekcija, dva query-a, a prvo puniš master tablicu u datasetu, onda detail.

i trebaju ti dva dataadaptera.

prouči dataset kako funkcionira.
[ Toxter @ 15.02.2011. 20:41 ] @
Zasto ne pokusas preko Office PIA : http://msdn.microsoft.com/en-u....interop.excel(office.12).aspx

Imas kompletan objektni model koji mapira (skoro)sve u Excelu pa samim tim i sve celije i Range-ove.

Pozdrav
[ negative7 @ 15.02.2011. 20:59 ] @
Znam ja Marko sto ti govoris ali jednostavno ne smim stavljat svaku tablicu u drugi sheet.
Imam 10 sheetova vec,+ svaki sheet mi ima 4-5 tablica, i + trazi se da iskljucivo radim u Excelu.
Jel mozes malo pogledat ovaj gore kod moj i reci jel se moze uradit sa jednim datasetom jer bi mi inace za svaku tablicu u sheetu trebao drugi dataset sa ovim mojim pristupom.


Citat:

Zasto ne pokusas preko Office PIA : http://msdn.microsoft.com/en-u....interop.excel(office.12).aspx

Imas kompletan objektni model koji mapira (skoro)sve u Excelu pa samim tim i sve celije i Range-ove.

Pozdrav


Pogledat cu svakako.
[ Boris B. @ 16.02.2011. 09:21 ] @
Ako podatke treba samo da prikažeš u gridu (a ne i da menjaš i zapisuješ nazad u excel), možeš sa linq-om da brzo preoblikuješ podatke po želji kada jednom učitaš podatke, mada zna da bude neefikasno ako ima mnogo podatka. Isto tako svaka promena strukture excela traži i ručnu promenu linq query-ja.
[ negative7 @ 21.02.2011. 20:04 ] @
imam recimo 5 sheetova i svaki sheet recimo po jednu tablicu,kako mogu da kad u c# pritisnem recimo button import da mi se prikaze samo tablica iz aktivnog sheeta,ne treba pisat citav kod, samo objasnjenje ili ideje ili pak ako postoji stogod mocno sto prepoznaje aktivni_sheet
[ negative7 @ 01.03.2011. 17:19 ] @
Rijesio sam ovaj problem tako da u citavom workbooku imam jednu ID tablicu(koja se nalazi samo u aktivnom sheetu) koja sadrzi neki broj koji mi govori o kojem sheetu je rijec.
Ali moram 2 puta otvarat konekciju,prvi put da provjerim koji je sheet a drugi put da uradim nesto....