تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] كيف نستورد أعمدة محددة من أكسل ؟
#1
السؤال واضح من العنوان 

أريد أن أستورد أعمدة من أوراق من أكسل بالاسم 

مثلا A .AL.AT

وهكذا مجرد مثل الاحرف 

وليس شيت كامل 

كما أن ملف الاكسل يحتوي على صفحات عدة لا تتحكم بعدد الصفحات ربما يكون 30 أو 40 أو 20 وهكاذ 

فالعمود المستورد  يشمل هذه الصفحات كلها 


اسم  محمد يوجد في العمود AL السطر 28 مثلا 

كيف نستورد ؟

ولكم مني جزيل الشكر والتقدير
الرد }}}
تم الشكر بواسطة:
#2
(23-01-24, 07:20 AM)saud1004 كتب : السؤال واضح من العنوان 

أريد أن أستورد أعمدة من أوراق من أكسل بالاسم 

مثلا A .AL.AT

وهكذا مجرد مثل الاحرف 

وليس شيت كامل 

كما أن ملف الاكسل يحتوي على صفحات عدة لا تتحكم بعدد الصفحات ربما يكون 30 أو 40 أو 20 وهكاذ 

فالعمود المستورد  يشمل هذه الصفحات كلها 


اسم  محمد يوجد في العمود AL السطر 28 مثلا 

كيف نستورد ؟

ولكم مني جزيل الشكر والتقدير

تفضل اخي غير المعلومات بحسب المطلوب

PHP كود :
Imports Microsoft.Office.Interop.Excel

Public Class Form2
    Private Sub btnImport_Click
(sender As ObjectAs EventArgsHandles btnImport.Click
        
' افتح ملف الإكسل باستخدام OpenFileDialog
        Dim openFileDialog As New OpenFileDialog()
        openFileDialog.Filter = "ملفات Excel|*.xls;*.xlsx"

        If openFileDialog.ShowDialog() = DialogResult.OK Then
            Try
                DataGridView1.Rows.Clear()
                ' 
إعداد التطبيق Excel
                Dim excelApp 
As New Application()
 
               Dim workbooks As Workbooks excelApp.Workbooks
                Dim workbook 
As Workbook workbooks.Open(openFileDialog.FileName)
 
               Dim worksheets As Sheets workbook.Sheets

                For i 
1 To worksheets.Count
                    
' اختيار الورقة المطلوبة، يمكن تعديل الاسم حسب اسم الورقة في الملف
                    Dim worksheet As Worksheet = DirectCast(worksheets(i), Worksheet)

                    ' 
قراءة البيانات من الصفوف في الورقة وإضافتها مباشرة إلى DataGridView
                    Dim row 
As Integer ' يفترض أن البيانات تبدأ من الصف 2
                    Do While Not String.IsNullOrEmpty(worksheet.Cells(row, 1).Value)
                        ' 
استخراج القيم من العمود المطلوب
                        Dim columnAValue 
As String worksheet.Cells(row"A").Value.ToString()
 
                       Dim columnBValue As String worksheet.Cells(row"B").Value.ToString()
 
                       Dim columnDValue As String worksheet.Cells(row"C").Value.ToString()

 
                       ' إضافة البيانات مباشرة إلى DataGridView
                        DataGridView1.Rows.Add(columnAValue, columnBValue, columnDValue)

                        ' 
انتقال إلى الصف التالي
                        row 
+= 1
                    Loop
                Next
                
' إغلاق ملف Excel
                workbook.Close()
                excelApp.Quit()
            Catch ex As Exception
                MessageBox.Show("حدث خطأ أثناء قراءة ملف Excel: " & ex.Message, "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try
        End If
    End Sub
End Class 
[صورة مرفقة: images?q=tbn:ANd9GcT72OLJW7D1E5QW-HUeWeJ...TGoNeg2jnQ]
الرد }}}
تم الشكر بواسطة: Nori Ashour
#3
الله يعطيك العافية  الكود جميل وفعال في ملف أكسل أقوم بتصميمه أنا حسب الكود  المكتوب من قبلكم

ولكن لو أن ملف أكسل محدد من موقع معين ولا يتغير
فمثلا قمت بتحميل ملف أكسل من موقع معين لا يتغير
مثلا
الاسم في  عمود AI الصف 28
الصف في عمود J الصف 19
الفصل في عمود   AA   الصف 28
أسماء المواد في عمود  AT
التقدير  في العمود X
درجة اختبار نهاية الفصل في العمود AL
يبدا جلب المواد من  الصف 35 تقريبا
الرد }}}
تم الشكر بواسطة:
#4
(23-01-24, 06:36 PM)saud1004 كتب : الله يعطيك العافية  الكود جميل وفعال في ملف أكسل أقوم بتصميمه أنا حسب الكود  المكتوب من قبلكم

ولكن لو أن ملف أكسل محدد من موقع معين ولا يتغير
فمثلا قمت بتحميل ملف أكسل من موقع معين لا يتغير
مثلا
الاسم في  عمود AI الصف 28
الصف في عمود J الصف 19
الفصل في عمود   AA   الصف 28
أسماء المواد في عمود  AT
التقدير  في العمود X
درجة اختبار نهاية الفصل في العمود AL
يبدا جلب المواد من  الصف 35 تقريبا

لم افهم لو توضح اكثر

اما بخصوص جلب الملف من موقع محدد استبدل المسار هنا (Dim workbook As Workbook workbooks.Open(openFileDialog.FileName))
مثلاً (Dim workbook As Workbook workbooks.Open("C:\FolderLink.xlsx"))
[صورة مرفقة: images?q=tbn:ANd9GcT72OLJW7D1E5QW-HUeWeJ...TGoNeg2jnQ]
الرد }}}
تم الشكر بواسطة: saud1004 , saud1004
#5
أولا أشكر لك متابعتك وحرصك على منفعة الغير فتقبل مني شكري واحترامي
لا أخي ليس الجلب من موقع
ملف أكسل عندي موجود بالعفل

ولكن المعلومات التي ذكرت هي داخل ملف الاكسل وأريد جلبها حسب موقعها من العمود والصف
الاسم في عمود AI الصف 28
الصف في عمود J الصف 19
الفصل في عمود AA الصف 28
أسماء المواد في عمود AT
التقدير في العمود X
درجة اختبار نهاية الفصل في العمود AL
أما المواد فهي في عمود واحد AT
ويبدأ جلبها من الصف رقم 35
يبدا جلب المواد من الصف 35 تقريبا

أتمنى أني قد وضحت الفكرة
الرد }}}
تم الشكر بواسطة:
#6
(24-01-24, 01:20 PM)saud1004 كتب : أولا أشكر لك متابعتك وحرصك على منفعة الغير فتقبل مني شكري واحترامي
لا أخي ليس الجلب من موقع
ملف أكسل عندي موجود بالعفل

ولكن المعلومات التي ذكرت هي داخل ملف الاكسل وأريد جلبها حسب موقعها من العمود والصف
الاسم في  عمود AI الصف 28
الصف في عمود J الصف 19
الفصل في عمود   AA   الصف 28
أسماء المواد في عمود  AT
التقدير  في العمود X
درجة اختبار نهاية الفصل في العمود AL
أما المواد فهي في عمود واحد AT
ويبدأ جلبها من الصف رقم 35
يبدا جلب المواد من  الصف 35 تقريبا

أتمنى أني قد وضحت الفكرة

جرب هذا وقم بتعديل البيانات بحسب المطلوب

PHP كود :
Private Sub Button1_Click(sender As ObjectAs EventArgsHandles Button1.Click

       Dim openFileDialog 
As New OpenFileDialog()
 
   openFileDialog.Filter "ملفات Excel|*.xls;*.xlsx"
 
   Try
        If openFileDialog
.ShowDialog() = DialogResult.OK Then
            DataGridView1
.Rows.Clear()
 
                       Dim excelApp As New Excel.Application()

 
                     Dim workbook As Excel.Workbook excelApp.Workbooks.Open(openFileDialog.FileName)
 
           Dim worksheets As Sheets workbook.Sheets
            For i 
1 To worksheets.Count
             
                Dim worksheet 
As Worksheet DirectCast(worksheets(i), Worksheet)
 
               Dim valueAI As Object worksheet.Cells(2"A").Value
                             Dim valueJ 
As Object worksheet.Cells(3"B").Value
                                         Dim valueAA 
As Object worksheet.Cells(1"C").Value
             
                DataGridView1
.Rows.Add(valueAIvalueJvalueAA)
 
           Next
            workbook
.Close(False)
 
                   excelApp.Quit()
 
           System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook)
 
           System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp)
 
       End If
 
   Catch ex As Exception
        MessageBox
.Show("حدث خطأ أثناء قراءة ملف Excel: " ex.Message"خطأ"MessageBoxButtons.OKMessageBoxIcon.Error)
 
       End Try
End Sub 
[صورة مرفقة: images?q=tbn:ANd9GcT72OLJW7D1E5QW-HUeWeJ...TGoNeg2jnQ]
الرد }}}
تم الشكر بواسطة: saud1004
#7
ما شاء الله تبارك الله

حفظك الله ورعاك نعم هذا ما أريد ولكن سأحاول أن أجد حل لاضافة أخرى

فإن لم أجد سأعود مرة أخرى

لأن كل طالب يتبعه سبع مواد فلابد من تكرار اسم الطالب سبع مرات لكل مادة درجة وهكذا

إن لم أجد حل رجعت لك فأرجو أن أكون خفيفا عليك

تقبل مني كل الشكر والتقدير والاحترام لشخصك الكريم
أسأل الله العلي العظيم أن يجعل ما تقدمه منفعة لغيرك في ميزان حسناتك
الرد }}}
تم الشكر بواسطة:
#8
بالتوفيق بإذن الله
[صورة مرفقة: images?q=tbn:ANd9GcT72OLJW7D1E5QW-HUeWeJ...TGoNeg2jnQ]
الرد }}}
تم الشكر بواسطة:
#9
السلام عليكم
الحمدلله تم استيراد جميع البيانات من ملف أكسل في موقعها الصحيح في الداتا قريد فيو

لكن عند الاتصال بقاعدة البيانات من نوع أكسس لا يقبل الاتصال يضع خطأ تحت ( OleDbConnection )

رغم أني وضعت ( Imports System.Data.OleDb )

وإذا ألغيت (Imports Microsoft.Office.Interop.Excel )

قبل الاتصال وألغى  كود الاستيراد

كيف أجمع بين الامرين
Imports Microsoft.Office.Interop.Excel

Imports System.Data.OleDb

وتقبل شكري وتقديري
الرد }}}
تم الشكر بواسطة:
#10
(25-01-24, 07:30 AM)saud1004 كتب : السلام عليكم
الحمدلله تم استيراد جميع البيانات من ملف أكسل في موقعها الصحيح في الداتا قريد فيو

لكن عند الاتصال بقاعدة البيانات من نوع أكسس لا يقبل الاتصال يضع خطأ تحت ( OleDbConnection )

رغم أني وضعت ( Imports System.Data.OleDb )

وإذا ألغيت (Imports Microsoft.Office.Interop.Excel )

قبل الاتصال وألغى  كود الاستيراد

كيف أجمع بين الامرين
Imports Microsoft.Office.Interop.Excel

Imports System.Data.OleDb

وتقبل شكري وتقديري

اجعل أوامر التعريف و الاستيراد الخاصة بالإكسل ضمن نافذة أو مودل
وأوامر التعريف الخاصة بـ الاكسس ضمن نافذة أو مودل منفصل
تجعل تعاريفك عامة (Public) لتستطيع ندائها من أي مكان في مشروعك..
بالتالي لن تحصل على أي تعارض..
قال صلى الله عليه وسلم: 
«كلمتان خفيفتان على اللسان 
ثقيلتان في الميزان،حبيبتان إلى الرحمن: 
سبحان الله وبحمده، سبحان الله العظيم».
الرد }}}
تم الشكر بواسطة: saud1004



التنقل السريع :


يقوم بقرائة الموضوع: