Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια σας!

 

Κάνω μια εφαρμογή στη visual basic kai θέλω να περνάω δεδομένα σε ένα υπάρχον excel και αυτά τα δεδομένα να προστίθονται στην πρώτη κενή γραμμή του αρχείου excel (δηλαδή στο τέλος).

 

Θα μπορούσε να μου πει κάποιος πως θα μπορούσα να κάνω κάτι τέτοιο;;;;;

Δημοσ.

VB.NET ναι;

 

Το excel αρχείο εσύ το δημιουργείς μέσω της εφαρμογής; Αν ναι είναι απλό, ακόμα και formating να κάνεις.

 

Αν όχι, αναφέρεσαι σε XLS ή XLSX αρχεία; (υπάρχει σημαντική διαφορά)

Δημοσ.

VB 2010.

Όχι μιλάω για ήδη υπάρχον αρχείο (.xls) και απλά θέλω να προσθέτω κάποια δεδομένα στο τέλος του αρχείου κάθε φορά (δηλαδή στην πρώτη κενή γραμμή μετά από δεδομένα)

Δημοσ.

VB 2010.

Όχι μιλάω για ήδη υπάρχον αρχείο (.xls) και απλά θέλω να προσθέτω κάποια δεδομένα στο τέλος του αρχείου κάθε φορά (δηλαδή στην πρώτη κενή γραμμή μετά από δεδομένα)

 

Για παλαιό xls, αυτό που χρειάζεσαι είναι να χρησιμοποιήσεις το Microsoft.Office.Interop.Excel και χρειάζεται η εφαρμογή να τρέχει ως admin. Μην ξεχάσεις να έχεις τα πάντα στο πακέτο εγκατάστασης.

 

Διαφορετικά, υπάρχουν πολλές 3rd party βιβλιοθήκες όπως η GemBox.Spreadsheet

 

 

Αν ήταν XLSX τα πράγματα είναι πιο εύκολα μιας και το αρχείο μπορείς να το χειριστείς ως XML μετά την αποσυμπίεσή του.

  • Like 1
Δημοσ.

έχω τον παρακάτω κώδικα

Dim strPath As String = "C:\a.xls"
        Dim oExcel As Object
        Dim oBook As Object
        Dim oSheet As Object
        Dim lRow As Object

        oExcel = CreateObject("Excel.Application")
        oBook = oExcel.Workbooks.Open(strPath, 0, False, 5, System.Reflection.Missing.Value, System.Reflection.Missing.Value, False, System.Reflection.Missing.Value, System.Reflection.Missing.Value, True, False, System.Reflection.Missing.Value, False)
        oSheet = oBook.Worksheets(1)
        lRow = oSheet.Range("A" & oSheet.Rows.Count).End(oSheet.XlDirection.xlDown).Row
        oSheet.Range("A" & lRow).Value = "Mitsos"
        MsgBox(lRow)
        oBook.Save()
        oExcel.Quit()

μου βγάζει αυτό : Public member 'XlDirection' on type 'Worksheet' not found

ξέρει μήπως υπάρχει κάτι άλλο αντίστοιχο;;;;;;

 

επίσης μπορεί κάποιος να μου εξηγήσει αυτό;;;;

oBook = oExcel.Workbooks.Open(strPath, 0, False, 5, System.Reflection.Missing.Value, System.Reflection.Missing.Value, False, System.Reflection.Missing.Value, System.Reflection.Missing.Value, True, False, System.Reflection.Missing.Value, False)
Δημοσ.

Για το πρώτο το ψάχνεις σε λάθος σημείο Το σωστό είναι Microsoft.Office.Interop.Excel.XlDirection το enumeration

 

http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.xldirection%28v=office.14%29.aspx

 

Για το δεύτερο

 

http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.workbooks.open%28v=office.11%29.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2

 

για να δεις τα ορίσματα της Workbooks.Open

Δημοσ.

 

έχω τον παρακάτω κώδικα

Dim strPath As String = "C:\a.xls"
        Dim oExcel As Object
        Dim oBook As Object
        Dim oSheet As Object
        Dim lRow As Object

        oExcel = CreateObject("Excel.Application")
        oBook = oExcel.Workbooks.Open(strPath, 0, False, 5, System.Reflection.Missing.Value, System.Reflection.Missing.Value, False, System.Reflection.Missing.Value, System.Reflection.Missing.Value, True, False, System.Reflection.Missing.Value, False)
        oSheet = oBook.Worksheets(1)
        lRow = oSheet.Range("A" & oSheet.Rows.Count).End(oSheet.XlDirection.xlDown).Row
        oSheet.Range("A" & lRow).Value = "Mitsos"
        MsgBox(lRow)
        oBook.Save()
        oExcel.Quit()

μου βγάζει αυτό : Public member 'XlDirection' on type 'Worksheet' not found

ξέρει μήπως υπάρχει κάτι άλλο αντίστοιχο;;;;;;

 

επίσης μπορεί κάποιος να μου εξηγήσει αυτό;;;;

oBook = oExcel.Workbooks.Open(strPath, 0, False, 5, System.Reflection.Missing.Value, System.Reflection.Missing.Value, False, System.Reflection.Missing.Value, System.Reflection.Missing.Value, True, False, System.Reflection.Missing.Value, False)

 

 

Στο strPath ποιο path εχεις, το εχεις αντιστοιχίσει κάπου

Δημοσ.

Για το πρώτο το ψάχνεις σε λάθος σημείο Το σωστό είναι Microsoft.Office.Interop.Excel.XlDirection το enumeration

 

http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.xldirection%28v=office.14%29.aspx

 

Για το δεύτερο

 

http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.workbooks.open%28v=office.11%29.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2

 

για να δεις τα ορίσματα της Workbooks.Open

 

Ο υπολογιστής στον οποίο δουλεύω έχει office 2003 και δεν μου έχει στις com το Microsoft.Office.Interop.Excel δουλεύω με αυτά τα references

image.jpg

 

Υπάρχει άλλος τρόπος να βρω τον αριθμό των γραμμών που έχουν δεδομένα ώστε να γράφω κάθε φορά στην επόμενη;;;;

 

 

 

Στο strPath ποιο path εχεις, το εχεις αντιστοιχίσει κάπου

 

Στην πρώτη γραμμή του κώδικα γίνεται η αντιστοίχιση

Δημοσ.

Και σε office 2003 πάλι το ίδιο είναι.

Dim oSheet As Object
Dim lRow As Object

oExcel = CreateObject("Excel.Application")
oBook = oExcel.Workbooks.Open(strPath, 0, False, 5, System.Reflection.Missing.Value, System.Reflection.Missing.Value, False, System.Reflection.Missing.Value, System.Reflection.Missing.Value, True, False, System.Reflection.Missing.Value, False)
oSheet = oBook.Worksheets(1)
lRow = oSheet.Range("A" & oSheet.Rows.Count).End(oSheet.XlDirection.xlDown).Row

Το oSheet είναι του "τύπου" Worksheets.Δεν υπάρχει property με το όνομα XlDirection εκεί.

 

http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.xldirection%28v=office.11%29.aspx

 

Δοκίμασε αντί του "oSheet.XlDirection.xlDown" να βάλεις το Excel.XlDirection

Δημοσ.

Όταν χρησιμοποιώ τον όρο Excel. μου το βγάζει ως error για αυτό και δουλεύω με objects.

 

Οπως ανέφερα πιο πάνω δεν υπάρχει το Microsoft.Office.Interop.Excel πουθενά στο pc :P και ένα πακέτο για office 2003 με PIA που βρήκα δεν μου το έχει από ότι κατάλαβα... μάλλον αρχίζει από το 2007 και πάνω...

Δημοσ.

 

Ο υπολογιστής στον οποίο δουλεύω έχει office 2003 και δεν μου έχει στις com το Microsoft.Office.Interop.Excel δουλεύω με αυτά τα references

image.jpg

 

Υπάρχει άλλος τρόπος να βρω τον αριθμό των γραμμών που έχουν δεδομένα ώστε να γράφω κάθε φορά στην επόμενη;;;;

 

 

 

 

Στην πρώτη γραμμή του κώδικα γίνεται η αντιστοίχιση

 

 

Μπορεις να σαρωνει με αν Loop ολες τις γραμμες και οτα βρεις την κενη εκει να γραφεις

Δημοσ.

Διόρθωσε τα references σου.

 

Επιλέγεις το project δεξί click -> Add Reference -> Assemblies -> Extensions εκεί μέσα πρέπει να είναι Microsoft.Office.Interop.Excel.

 

Aν δεν υπάρχει εγκατέστησε τα Visual Studio Tools for Office.Checkαρε μια αν υπάρχει ο φάκελος αυτός

 

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA

Δημοσ.

Μπορεις να σαρωνει με αν Loop ολες τις γραμμες και οτα βρεις την κενη εκει να γραφεις

Φίλε μου σε ευχαριστώ πολύ!!!!

Το έκανα έτσι... αλλά γιατί ποτέ δεν σκέφτομαι το πιο απλό :P

 

 

 

Διόρθωσε τα references σου.

 

Επιλέγεις το project δεξί click -> Add Reference -> Assemblies -> Extensions εκεί μέσα πρέπει να είναι Microsoft.Office.Interop.Excel.

 

Aν δεν υπάρχει εγκατέστησε τα Visual Studio Tools for Office.Checkαρε μια αν υπάρχει ο φάκελος αυτός

 

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA

 

Δεν υπάρχει το assemblies που μου είπες...  στο add reference εχω της επιλογές

  • .ΝΕΤ
  • COM
  • Projects
  • Browse
  • Recent

ευχαριστώ πάντως!!!! το έκανα με πιο απλό τρόπο!!!

  • Like 1

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...