rafinos Δημοσ. 4 Ιουλίου 2013 Δημοσ. 4 Ιουλίου 2013 Γεια σας! Κάνω μια εφαρμογή στη visual basic kai θέλω να περνάω δεδομένα σε ένα υπάρχον excel και αυτά τα δεδομένα να προστίθονται στην πρώτη κενή γραμμή του αρχείου excel (δηλαδή στο τέλος). Θα μπορούσε να μου πει κάποιος πως θα μπορούσα να κάνω κάτι τέτοιο;;;;;
Apoll Δημοσ. 4 Ιουλίου 2013 Δημοσ. 4 Ιουλίου 2013 VB.NET ναι; Το excel αρχείο εσύ το δημιουργείς μέσω της εφαρμογής; Αν ναι είναι απλό, ακόμα και formating να κάνεις. Αν όχι, αναφέρεσαι σε XLS ή XLSX αρχεία; (υπάρχει σημαντική διαφορά)
rafinos Δημοσ. 4 Ιουλίου 2013 Μέλος Δημοσ. 4 Ιουλίου 2013 VB 2010. Όχι μιλάω για ήδη υπάρχον αρχείο (.xls) και απλά θέλω να προσθέτω κάποια δεδομένα στο τέλος του αρχείου κάθε φορά (δηλαδή στην πρώτη κενή γραμμή μετά από δεδομένα)
NikosKallithea Δημοσ. 4 Ιουλίου 2013 Δημοσ. 4 Ιουλίου 2013 δες εδω μπορει να σου κανει http://www.insomnia.gr/topic/449938-visual-basic-%CE%BA%CE%B1%CE%B9-excel/
Apoll Δημοσ. 4 Ιουλίου 2013 Δημοσ. 4 Ιουλίου 2013 VB 2010. Όχι μιλάω για ήδη υπάρχον αρχείο (.xls) και απλά θέλω να προσθέτω κάποια δεδομένα στο τέλος του αρχείου κάθε φορά (δηλαδή στην πρώτη κενή γραμμή μετά από δεδομένα) Για παλαιό xls, αυτό που χρειάζεσαι είναι να χρησιμοποιήσεις το Microsoft.Office.Interop.Excel και χρειάζεται η εφαρμογή να τρέχει ως admin. Μην ξεχάσεις να έχεις τα πάντα στο πακέτο εγκατάστασης. Διαφορετικά, υπάρχουν πολλές 3rd party βιβλιοθήκες όπως η GemBox.Spreadsheet Αν ήταν XLSX τα πράγματα είναι πιο εύκολα μιας και το αρχείο μπορείς να το χειριστείς ως XML μετά την αποσυμπίεσή του. 1
rafinos Δημοσ. 5 Ιουλίου 2013 Μέλος Δημοσ. 5 Ιουλίου 2013 έχω τον παρακάτω κώδικα 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)
nucleus Δημοσ. 5 Ιουλίου 2013 Δημοσ. 5 Ιουλίου 2013 Για το πρώτο το ψάχνεις σε λάθος σημείο Το σωστό είναι 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
NikosKallithea Δημοσ. 5 Ιουλίου 2013 Δημοσ. 5 Ιουλίου 2013 έχω τον παρακάτω κώδικα 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 εχεις, το εχεις αντιστοιχίσει κάπου
rafinos Δημοσ. 5 Ιουλίου 2013 Μέλος Δημοσ. 5 Ιουλίου 2013 Για το πρώτο το ψάχνεις σε λάθος σημείο Το σωστό είναι 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 Υπάρχει άλλος τρόπος να βρω τον αριθμό των γραμμών που έχουν δεδομένα ώστε να γράφω κάθε φορά στην επόμενη;;;; Στο strPath ποιο path εχεις, το εχεις αντιστοιχίσει κάπου Στην πρώτη γραμμή του κώδικα γίνεται η αντιστοίχιση
nucleus Δημοσ. 5 Ιουλίου 2013 Δημοσ. 5 Ιουλίου 2013 Και σε 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
rafinos Δημοσ. 5 Ιουλίου 2013 Μέλος Δημοσ. 5 Ιουλίου 2013 Όταν χρησιμοποιώ τον όρο Excel. μου το βγάζει ως error για αυτό και δουλεύω με objects. Οπως ανέφερα πιο πάνω δεν υπάρχει το Microsoft.Office.Interop.Excel πουθενά στο pc και ένα πακέτο για office 2003 με PIA που βρήκα δεν μου το έχει από ότι κατάλαβα... μάλλον αρχίζει από το 2007 και πάνω...
NikosKallithea Δημοσ. 5 Ιουλίου 2013 Δημοσ. 5 Ιουλίου 2013 Ο υπολογιστής στον οποίο δουλεύω έχει office 2003 και δεν μου έχει στις com το Microsoft.Office.Interop.Excel δουλεύω με αυτά τα references Υπάρχει άλλος τρόπος να βρω τον αριθμό των γραμμών που έχουν δεδομένα ώστε να γράφω κάθε φορά στην επόμενη;;;; Στην πρώτη γραμμή του κώδικα γίνεται η αντιστοίχιση Μπορεις να σαρωνει με αν Loop ολες τις γραμμες και οτα βρεις την κενη εκει να γραφεις
nucleus Δημοσ. 5 Ιουλίου 2013 Δημοσ. 5 Ιουλίου 2013 Διόρθωσε τα 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
rafinos Δημοσ. 5 Ιουλίου 2013 Μέλος Δημοσ. 5 Ιουλίου 2013 Μπορεις να σαρωνει με αν 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 Δεν υπάρχει το assemblies που μου είπες... στο add reference εχω της επιλογές .ΝΕΤ COM Projects Browse Recent ευχαριστώ πάντως!!!! το έκανα με πιο απλό τρόπο!!! 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα