Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Import iz Excela u C#

[es] :: .NET :: Import iz Excela u C#

[ Pregleda: 2571 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

negative7
Ivan Raic

Član broj: 186110
Poruke: 151
*.tel.net.ba.



Profil

icon Import iz Excela u C#11.02.2011. u 22:03 - pre 160 meseci
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.
 
Odgovor na temu

MarkoBalkan

Član broj: 141124
Poruke: 1624
46.188.157.*



+19 Profil

icon Re: Import iz Excela u C#14.02.2011. u 17:40 - pre 160 meseci
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
 
Odgovor na temu

negative7
Ivan Raic

Član broj: 186110
Poruke: 151
62.113.4.*



Profil

icon Re: Import iz Excela u C#15.02.2011. u 09:08 - pre 160 meseci
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]
 
Odgovor na temu

MarkoBalkan

Član broj: 141124
Poruke: 1624
46.188.157.*



+19 Profil

icon Re: Import iz Excela u C#15.02.2011. u 15:53 - pre 160 meseci
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.


 
Odgovor na temu

negative7
Ivan Raic

Član broj: 186110
Poruke: 151
62.113.4.*



Profil

icon Re: Import iz Excela u C#15.02.2011. u 19:53 - pre 160 meseci
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.
 
Odgovor na temu

MarkoBalkan

Član broj: 141124
Poruke: 1624
46.188.221.*



+19 Profil

icon Re: Import iz Excela u C#15.02.2011. u 20:40 - pre 160 meseci
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.
 
Odgovor na temu

Toxter
NS

Član broj: 39393
Poruke: 317
*.dynamic.sbb.rs.



+6 Profil

icon Re: Import iz Excela u C#15.02.2011. u 20:41 - pre 160 meseci
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
Sad mu nije nista, ubio si ga k'o zeca...
 
Odgovor na temu

negative7
Ivan Raic

Član broj: 186110
Poruke: 151
*.tel.net.ba.



Profil

icon Re: Import iz Excela u C#15.02.2011. u 20:59 - pre 160 meseci
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.
 
Odgovor na temu

Boris B.
Ljubljana

Član broj: 213615
Poruke: 286
*.zaslon-telecom.si.



+14 Profil

icon Re: Import iz Excela u C#16.02.2011. u 09:21 - pre 160 meseci
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.
if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
 
Odgovor na temu

negative7
Ivan Raic

Član broj: 186110
Poruke: 151
*.fesb.hr.



Profil

icon Re: Import iz Excela u C#21.02.2011. u 20:04 - pre 160 meseci
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
 
Odgovor na temu

negative7
Ivan Raic

Član broj: 186110
Poruke: 151
*.CARNet.hr.



Profil

icon Re: Import iz Excela u C#01.03.2011. u 17:19 - pre 160 meseci
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....
 
Odgovor na temu

[es] :: .NET :: Import iz Excela u C#

[ Pregleda: 2571 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.