Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Ανάγνωση απο excel

Îåêßíçóå áðü ôï ìÝëïò rantanplan. Τελευταία δημοσίευση από το μέλος nikolaosk στις 16-10-2009, 15:43. Υπάρχουν 21 απαντήσεις.
Σελίδα 1 από 2 (22 εγγραφές)   1 2 >
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  14-10-2009, 15:27 54475

    Ανάγνωση απο excel

    Imports Excel
    Imports Microsoft.Office
    Public Class Form1


        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

            Dim objExcel As New Excel._ExcelApplication
            Dim objWrkBk As Excel.Workbook
            Dim objSht As Excel.Worksheet
            Dim sourceName As String
            Dim TargetName As String

            objWrkBk = GetObject("C:\source_target.xls")
            'objWrkBk = objExcel.Workbooks.Open("C:\source_target.xls")
            objSht = objWrkBk.Worksheets(1)


            For i As Integer = 2 To 650
                sourceName = objSht.Cells(i, 4).ToString
                TargetName = objSht.Cells(i, 5).ToString
                Debug.Print(sourceName)
                My.Computer.FileSystem.RenameFile("C:\Attachment\" & sourceName, "C:\Attachment\" & TargetName)
            Next i

        End Sub
    End Class



    Προσπαθώ να διαβάσω απο excel και μου σκάει σε αυτήν την γραμμή
    objSht = objWrkBk.Worksheets(1)

    Κάποιοα βοήθεια;
    VB.NET 2008


    Keep programming.....
  •  14-10-2009, 18:04 54481 σε απάντηση της 54475

    Απ: Ανάγνωση απο excel

    Τί σου σκάει και τί σου λέει? Δεν γίνεται να σε βοηθήσει κανείς αν δεν πεις τί συμβαίνει. Για παράδειγμα ο παρακάτω κώδικας δουλεύει χωρίς πρόβλημα. Εσύ τί πρόβλημα (exception, μήνυμα) αντιμετωπίζεις?

            Dim path As String = "E:\myfile.xlsx"
            Dim book1 As Workbook = GetObject(path)
            Dim sheet1 As Worksheet = book1.Worksheets(1)
            Console.WriteLine(sheet1.Name)

    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  15-10-2009, 10:28 54492 σε απάντηση της 54481

    Απ: Ανάγνωση απο excel

    Όυπς δίκαιο έχεις...

    Μου λέει το εξής μήνυμα

    Member not found. (Exception from HRESULT: 0x80020003 (DISP_E_MEMBERNOTFOUND))

    Keep programming.....
  •  15-10-2009, 11:30 54497 σε απάντηση της 54475

    Απ: Ανάγνωση απο excel

    Αν είσαι σε vista μπορεί να είναι θέμα δικαιωμάτων. Βάλε το αρχείο σε ένα TEMP FOLDER δώσε full δικαιώματα σε everyone να αποκλείσουμε το security. 
    Manos
  •  15-10-2009, 11:44 54499 σε απάντηση της 54492

    Απ: Ανάγνωση απο excel


    Κάνε Import τα

    Imports Microsoft.Office.Interop.Excel
    Imports Microsoft.Office
    και

    άλλαξε αυτό από

    Dim objExcel As New Excel._ExcelApplication


    σε

    Dim objExcel As New Microsoft.Office.Interop.Excel.Application


    Νικόλαος Καντζέλης
    BSc, MSc, MCAS, MCPD, MCITP, MCTS,MCP, MCT
    http://www.nksolutions.gr
    http://dotnetstories.wordpress.com
    http://weblogs.asp.net/dotnetstories
    http://forum.dotnetnuke.gr
  •  15-10-2009, 11:47 54500 σε απάντηση της 54492

    Απ: Ανάγνωση απο excel

    Το μήνυμα αυτό λέει ότι το αντικείμενο που επέστρεψε η GetObject ΔΕΝ περιέχει Worksheets. Δεδομένου ότι ένα Workbook έχει πάντα Worksheets, είναι σα να σου λέει ότι το αντικείμενο ΔΕΝ είναι Workbook. Αλήθεια, το αρχείο είναι πραγματικό xls ή είναι κανένα csv ή HTML table με κατάληξη xls? Και γιατί χρησιμοποιείς την GetObject και όχι την WorkBooks.Open ?


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  15-10-2009, 12:22 54501 σε απάντηση της 54500

    Απ: Ανάγνωση απο excel

    1) Είμαι σε XP.

    2) To Imports Microsoft.Office.Interop.Excel δεν μου το αναγνωρίζει. Αντ' αυτού μο προτείνει το Excel

    3) Αν χρησιμοποιήσω την Open μου βγάζει το εξής error: Member not found. (Exception from HRESULT: 0x80020003 (DISP_E_MEMBERNOTFOUND))
       Είναι κανονικό xls.

    Keep programming.....
  •  15-10-2009, 12:56 54502 σε απάντηση της 54501

    Απ: Ανάγνωση απο excel

    Μάλλον αυτό που λέει ο Νίκος είναι το πρόβλημα σου και χρησιμοποιείς λάθος τύπους αντικειμένων. Και στο δικό μου παράδειγμα χρησιμοποίησα το Microsoft.Office.Interop.Excel. Για να το χρησιμοποιήσω πρόσθεσα το αντίστοιχο assembly reference. Αλήθεια, τί assembly έχεις κάνει reference και σου εμφανίζει το Excel και το _ExcelApplication ?

    Η ουσία του προβλήματος είναι ότι δεν δουλεύεις με .NET αλλά με COM αντικείμενα. Στον κόσμο του COM ένα αντικείμενο μπορεί να υλοποιεί πολλά interfaces. Όταν καλείς εσύ μία μέθοδο το COM ψάχνει όλα τα interfaces να βρει αν υπάρχει μία μέθοδος που ταιριάζει. Προφανώς αυτό είναι αργό. Η εναλλακτική είναι να ζητήσεις εσύ από το αντικείμενο να σου επιστρέψει ένα reference σε ένα συγκεκριμένο interface και μετά να δουλέψεις μέσω αυτού και μόνο. Αν θέλεις άλλο interface πρέπει να το ζητήσεις εκ νέου.
        Αυτό συμβαίνει ότακ κάνεις assign ένα COM αντικείμενο σε μεταβλητή συγκεκριμένου τύπου. Το COM αντικείμενο βρίσκει το αντίστοιχο interface και σου επιστρέφει ένα reference σε αυτό. Ακόμα και αν υποστηρίζει περισσότερες μεθόδους, εσύ θα δεις μόνο τις μεθόδους του interface. Προφανώς, το assembly που χρησιμοποίησες επιστρέφει διαφορετικά interfaces από αυτά που περίμενες και έτσι δημιουργείται το πρόβλημα. Το COM χρησιμοποιούσε πολλά διαφορετικά interfaces για κάθε δουλειά και υπήρχε η συνθήκη όσα δεν είναι για ευρεία κατανάλωση να έχουν το πρόθεμα _ . Η VB6 δεν τα εμφάνιζε αυτά οπότε κατά κανόνα δεν υπήρχε πρόβλημα.

    Όλα αυτά γίνονται στο runtime οπότε μπορείς άνετα να παρακάμψεις εντελώς την ανάγκη να ορίσεις τον τύπο της μεταβλητής και να γράψεις το παρακάτω ΧΩΡΙΣ ΟΥΤΕ ΚΑΝ ΤΟ Imports

            Dim path As String = "E:\myfile.xls"
            Dim book1 = GetObject(path)
            Dim sheet1 = book1.Worksheets(1)
            Console.WriteLine(sheet1.Name)

    Αυτό δουλεύει επειδή το COM ψάχνει τη στιγμή που εκτελείται ο κώδικας να δει αν το συγκεκριμένο αντικείμενο έχει κάπου, κάποια μέθοδο που λέγετε Worksheets κλπ και την εκτελεί. Είναι μεν ο πιο αργός τρόπος απ' όλους αλλά δουλεύει.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  15-10-2009, 13:19 54503 σε απάντηση της 54502

    Απ: Ανάγνωση απο excel

    Παναγιώτη επειδή θα τρελαθώ στο τέλος... 
    Έχω γράψει το εξής: 
    Και έχω κάνει αναφορά σε 
    1) Microsoft Excel 11.0 Object Library (COM) 
    2) Microsoft Office 11.0 Object Library (COM)
    Και συνεχίζω να πέρνω το ίδιο error


    Imports Excel

    Public Class Form1


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


            'Dim objExcel As New Excel._ExcelApplication
            Dim objWrkBk As Workbook
            Dim objSht As Worksheet
            Dim sourceName As String
            Dim TargetName As String

            objWrkBk = GetObject("C:\Book1.xls")
            'objWrkBk = objExcel.Workbooks.Open("C:\Book1.xls")
            objSht = objWrkBk.Worksheets(1)


            For i As Integer = 2 To 650
                sourceName = objSht.Cells(i, 4).ToString
                TargetName = objSht.Cells(i, 5).ToString
                Debug.Print(sourceName)
                My.Computer.FileSystem.RenameFile("C:\Attachment\" & sourceName, "C:\Attachment\" & TargetName)
            Next i


        End Sub
    End Class


    Keep programming.....
  •  15-10-2009, 13:34 54504 σε απάντηση της 54503

    Απ: Ανάγνωση απο excel

    Για να χρησιμοποιήσεις το Microsoft.Office.Interop.Excel πρέπει να πρόσθεσεις το αντίστοιχο assembly reference. Αυτό γίνεται από το (add reference) -> .ΝΕΤ (tab-καρτέλα) και βρίσκεις το αντίστοιχο assembly Microsoft.Office.Interop.Excel και το κάνεις add


    Νικόλαος Καντζέλης
    BSc, MSc, MCAS, MCPD, MCITP, MCTS,MCP, MCT
    http://www.nksolutions.gr
    http://dotnetstories.wordpress.com
    http://weblogs.asp.net/dotnetstories
    http://forum.dotnetnuke.gr
  •  15-10-2009, 13:40 54505 σε απάντηση της 54503

    Απ: Ανάγνωση απο excel

    Όχι αυτά, το Microsoft.Office.Interop.Excel πρέπει να βάλεις από τα .NET References.

     Το πρόβλημα σου είναι ότι έβαλες reference στο COM library του Excel, όχι στο .NET Wrapper που φροντίζει για τις διάφορες παραξενιές. Όταν βάζεις ένα COM reference το Visual Studio θα δημιουργήσει αυτόματα ένα wrapper για όποιο interface και κλάση βρει. Αν καλέσεις λάθος Interface θα έχεις πρόβλημα. Αντίθετα, το Microsoft.Office.Interop.Excel μαζεύει αρκετά την κατάσταση.


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  15-10-2009, 13:42 54506 σε απάντηση της 54505

    Απ: Ανάγνωση απο excel

    Δεν μου εμφανίζει .ΝΕΤ reference....
    Keep programming.....
  •  15-10-2009, 13:52 54507 σε απάντηση της 54506

    Απ: Ανάγνωση απο excel

    Καλά, στο Visual Studio δεν δουλεύεις? Project Properties > References > Add και θα σου εμφανίσει το dialog box με τα references σε tabs: .ΝΕΤ, COM, Projects, Browse, Recent.

    Καλά, πως βάζεις ως τώρα τα references?


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  15-10-2009, 13:56 54508 σε απάντηση της 54506

    Απ: Ανάγνωση απο excel

    Συνημμένα: excel.jpg
    δες το συννημένο...

    Νικόλαος Καντζέλης
    BSc, MSc, MCAS, MCPD, MCITP, MCTS,MCP, MCT
    http://www.nksolutions.gr
    http://dotnetstories.wordpress.com
    http://weblogs.asp.net/dotnetstories
    http://forum.dotnetnuke.gr
  •  15-10-2009, 13:58 54509 σε απάντηση της 54507

    Απ: Ανάγνωση απο excel

    Ναι αυτό σου λέω...
    Έτσι τα βάζω και στην καρτέλα .NET δεν μοθυ εμφανίζει κάτι σχετικό... 

    Keep programming.....
Σελίδα 1 από 2 (22 εγγραφές)   1 2 >
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems