• 12 odgovora
  • 3.390 pregleda
pocetnik pomoc oko aplikacije 07.10.2007. u 20:35 · pre 231 meseci #1
Zdravo, pocetnik sam u VB.net i okacio sam aplikaciju i xls fajl koji ide uz nju. Aplikacija treba da otvara excel fajl i preko svoje forme da unosi podatke u fajl.
ovo je samo pocetak i okacio sam da bih postavio par pitanja:
1)kada startujem aplikaciju i ugasim je u proccessima excel ostaje aktivan.Sta da ubacim da se excel gasi.
2)kako da datagrid povezem sa fajlom to jest da u datagridu budu podaci iz fajla?
ovo je za pocetak
a evo i koda :
Code:

Public Class Form1
    Dim ap As New Microsoft.Office.Interop.Excel.Application
    Dim file As String
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        file = "e:\proba.xls"
        ap.Workbooks.Open(file)
        ap.Visible = True
        ap.UserControl = True
        
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        ap.Range("a1").End(Microsoft.Office.Interop.Excel.XlDirection.xlDown).Offset(1, 0).Select()
        ap.ActiveCell.Value = TextBox1.Text
        ap.ActiveCell.Offset(0, 1).Value = TextBox2.Text
        ap.ActiveCell.Offset(0, 2).Value = TextBox3.Text
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        ap.ActiveWorkbook.Close()
        ap.Quit()
    End Sub
End Class

Re: pocetnik pomoc oko aplikacije 07.10.2007. u 20:38 · pre 231 meseci #2
da bi ubacivao u excell, excell ne moraš otvarati.

nego učitaš xml file i ubaciš podatke u excell.
Re: pocetnik pomoc oko aplikacije 07.10.2007. u 21:55 · pre 231 meseci #3
mozes li malo opsirnije o tom nacinu unosa u excel peko xml -fajla?
hvala
Re: pocetnik pomoc oko aplikacije 08.10.2007. u 11:59 · pre 231 meseci #4
evo ti pomoc oko gasenja excel procesa u memoriji, svojevremno sam imao slican problem.
kod je u c#, nadam se da ti nece biti problem da ga prevedes u VB. Override-uj Dispose metodu i tu ocisti prvo memoriju od referenci na excel COM objekte pa pozovi ovu metodu.

Code:

 #region KILLING HANGING EXCEL PROCESSES
        
        [DllImport ("user32.dll")]
        static extern void EndTask(IntPtr hWnd);
        [DllImport("user32.dll")]
        static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
        [DllImport("user32.dll")]
        static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId);
        [DllImport("kernel32.dll")]
        static extern void SetLastError(uint dwErrCode);

        private void EnsureProcessKilled(IntPtr mainWindowHandle, string caption)
        {
            uint iRes, iProcID;
            
            SetLastError(0);
        
            if(IntPtr.Equals(mainWindowHandle, IntPtr.Zero))
                mainWindowHandle = FindWindow(null, caption);

            if(IntPtr.Equals(mainWindowHandle, IntPtr.Zero))
                return; 
            
            iRes = GetWindowThreadProcessId(mainWindowHandle, out iProcID);
            if (iProcID == 0)
            {
                EndTask(mainWindowHandle);
                if(Marshal.GetLastWin32Error() != 0)
                    return;
                throw new ApplicationException("Failed to close Excel Process.");
            }
           
            Process proc = Process.GetProcessById((int)iProcID);
            proc.CloseMainWindow();
            proc.Refresh();
            if(proc.HasExited)
                return;

            proc.Kill();
        }

 #endregion
Re: pocetnik pomoc oko aplikacije 09.10.2007. u 00:05 · pre 231 meseci #5
a moze li mi neko objasniti kako da povezem datagridview sa excel fajlom da se pri otvaranju aplikacije podaci iza tabele u excelu vide u datagridvew-u
Puno hvala.
Re: pocetnik pomoc oko aplikacije 09.10.2007. u 12:19 · pre 231 meseci #6
isto čitaš podatke iz excella kao i iz baze.samo što ti prvi puni red doda u nazive kolona pa moraš paziti.
Re: pocetnik pomoc oko aplikacije 09.10.2007. u 14:18 · pre 231 meseci #7
Code:

Imports System.Data
Imports System.Data.OleDb
Public Class Form1

    Dim ap As New Microsoft.Office.Interop.Excel.Application
    Dim file As String
    Dim ConnString As String = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=e:\proba.xls; Extended Properties=Excel 11.0;"
    Dim MyConnection As System.Data.OleDb.OleDbConnection
    Dim da As System.Data.OleDb.OleDbDataAdapter
    Dim ds As DataSet = New DataSet

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        
        MyConnection = New System.Data.OleDb.OleDbConnection(ConnString)
        da = New System.Data.OleDb.OleDbDataAdapter("select * from [sheet1$]", MyConnection)
        da.Fill(ds, "[sheet1$]")
        DataGridView1.DataSource = ds.DefaultViewManager



javlja mi gresku?
gde gresim?
Re: pocetnik pomoc oko aplikacije 09.10.2007. u 15:11 · pre 231 meseci #8
Public Class Form1

Dim cs As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\a.xls;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"""
Dim c As New OleDb.OleDbConnection(cs)

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim a As New OleDb.OleDbDataAdapter("SELECT * FROM [List1$] ", c)
Dim d As New DataTable

a.Fill(d)

DataGridview1.DataSource = d


End Sub

End Class
Re: pocetnik pomoc oko aplikacije 09.10.2007. u 23:41 · pre 231 meseci #9
Hvala marko, a kako da namesti m da mi datagridview menja dimenziju u zavisnosti od popunjenosti - znaci ako nije ceo popunjen da ne bude viska a ako ima vise podataka da se sam prosiri?
puno hvala!
Re: pocetnik pomoc oko aplikacije 10.10.2007. u 18:00 · pre 231 meseci #11
Hvala na odgovorima!
A kako da namestim da prilikom unosa novih podataka u sheet1 na dugme unesi se azurira i sadrzaj datagrida??? sve sam pokusao ali ne vredi!
Re: pocetnik pomoc oko aplikacije 10.10.2007. u 20:11 · pre 231 meseci #12
kako?
d.clear() -brise datatable ja mislim da tako ide, ne znam napamet.
recimo na klik ti ubacis.
i ovdje opet stavis kod za citanje i on ti sve prikaze u datagridu.
to je dobro ako je podataka malo, ali ako je iznad 50000 ovo se ne preporuca.
i jo nesto.
kod se u biti ne bi smio ponavljati.
morao bi imati jedan potprogram za citanje, kojeg pozoves u jednom i drugom slucaju i to je to, a prije toga moras obrisati sadrzaj datatable-a.
Re: pocetnik pomoc oko aplikacije 10.10.2007. u 20:20 · pre 231 meseci #13
problem je bio u sledecem, to sam ja uprav i uradio ali nije htelo, onda sam ubacio posle svakog unosa liniju
ap.activeworkbooks.save()

i onda je radilo kako treba,jer je kod uvek citao fajl koji je u direktorijumu a kada menjas podatke u excelu dok ne zapamtis taj fajl se ne menja vec samo onaj u aktivnoj memoriji.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme