منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : كود لتصدير للاكسيل مع الحماية
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ،،
ارجو المساعدة في كود لتصدير للاكسيل مع الحماية للبيانات  من التعديل 
والسلام عليكم
(02-03-26, 01:29 PM)MOHAMMED ALZWI كتب : [ -> ]السلام عليكم ،،
ارجو المساعدة في كود لتصدير للاكسيل مع الحماية للبيانات  من التعديل 
والسلام عليكم

عليكم السلام و رحمة الله و بركاته
السؤال غير واضح
التصدير من اين ؟
طريقة احترافية وسريعة جداً لتصدير البيانات إلى Microsoft Excel في VB.NET باستخدام مكتبة EPPlus.
هذه الطريقة أسرع بكثير من Interop وتستطيع تصدير 100 ألف سجل خلال ثوان. 

اولاُ قم بتثبيت المكتبة EPPlus من NuGet Package Manager :
PHP كود :
Imports OfficeOpenXml
Imports OfficeOpenXml
.Style
Imports System
.IO
Public Sub ExportToExcel(dt As DataTable)
    Dim filePath As String "C:\Report.xlsx"
    ExcelPackage.LicenseContext LicenseContext.NonCommercial
    Using package 
As New ExcelPackage()
        Dim ws package.Workbook.Worksheets.Add("Data")
        'تصدير البيانات دفعة واحدة 
        ws.Cells("A1").LoadFromDataTable(dt, True)
        '
تنسيق العناوين
        ws
.Row(1).Style.Font.Bold True
        
'قفل الخلايا
        ws.Cells.Style.Locked = True
        '
حماية الورقة
        ws
.Protection.IsProtected True
        ws
.Protection.SetPassword("1234")
        'منع التعديل
        ws.Protection.AllowDeleteRows = False
        ws.Protection.AllowInsertRows = False
        ws.Protection.AllowFormatCells = False
        '
حفظ الملف
        File
.WriteAllBytes(filePathpackage.GetAsByteArray())
    End Using
    MsgBox
("تم تصدير الملف بنجاح")
End Sub 

مثال إذا كانت البيانات في DataGridView
PHP كود :
Dim dt As New DataTable()

For 
Each col As DataGridViewColumn In DataGridView1.Columns
    dt
.Columns.Add(col.HeaderText)
Next

For Each row As DataGridViewRow In DataGridView1.Rows
    
If Not row.IsNewRow Then
        Dim dr 
dt.NewRow()
        For 0 To DataGridView1.Columns.Count 1
            dr
(i) = row.Cells(i).Value
        Next
        dt
.Rows.Add(dr)
    End If
Next

ExportToExcel
(dt
(06-03-26, 12:01 AM)Amir_Alzubidy كتب : [ -> ]
(02-03-26, 01:29 PM)MOHAMMED ALZWI كتب : [ -> ]السلام عليكم ،،
ارجو المساعدة في كود لتصدير للاكسيل مع الحماية للبيانات  من التعديل 
والسلام عليكم

عليكم السلام و رحمة الله و بركاته
السؤال غير واضح
التصدير من اين ؟
طريقة احترافية وسريعة جداً لتصدير البيانات إلى Microsoft Excel في VB.NET باستخدام مكتبة EPPlus.
هذه الطريقة أسرع بكثير من Interop وتستطيع تصدير 100 ألف سجل خلال ثوان. 

اولاُ قم بتثبيت المكتبة EPPlus من NuGet Package Manager :
PHP كود :
Imports OfficeOpenXml
Imports OfficeOpenXml
.Style
Imports System
.IO
Public Sub ExportToExcel(dt As DataTable)
    Dim filePath As String "C:\Report.xlsx"
    ExcelPackage.LicenseContext LicenseContext.NonCommercial
    Using package 
As New ExcelPackage()
        Dim ws package.Workbook.Worksheets.Add("Data")
        'تصدير البيانات دفعة واحدة 
        ws.Cells("A1").LoadFromDataTable(dt, True)
        '
تنسيق العناوين
        ws
.Row(1).Style.Font.Bold True
        
'قفل الخلايا
        ws.Cells.Style.Locked = True
        '
حماية الورقة
        ws
.Protection.IsProtected True
        ws
.Protection.SetPassword("1234")
        'منع التعديل
        ws.Protection.AllowDeleteRows = False
        ws.Protection.AllowInsertRows = False
        ws.Protection.AllowFormatCells = False
        '
حفظ الملف
        File
.WriteAllBytes(filePathpackage.GetAsByteArray())
    End Using
    MsgBox
("تم تصدير الملف بنجاح")
End Sub 

مثال إذا كانت البيانات في DataGridView
PHP كود :
Dim dt As New DataTable()

For 
Each col As DataGridViewColumn In DataGridView1.Columns
    dt
.Columns.Add(col.HeaderText)
Next

For Each row As DataGridViewRow In DataGridView1.Rows
    
If Not row.IsNewRow Then
        Dim dr 
dt.NewRow()
        For 0 To DataGridView1.Columns.Count 1
            dr
(i) = row.Cells(i).Value
        Next
        dt
.Rows.Add(dr)
    End If
Next

ExportToExcel
(dt

شكرا اخي الكريم مشاركتك

تصدير البيانات من  DataGridView الى اكسيل 
اقصد بالحماية المستند من التعديل بعد التصدير من النظام  حتى لا يتم تغير اي بيانات في المستند 
ولا يمكن للموظف ان يقوم باي تغير على المستند
وتكون البيانات صحيحة  100 %

فيجوال بيسك 2010
الاسطر المسؤولة عن الحماية موجودة في الكود السابق

كود :
        'حماية الورقة
        ws.Protection.IsProtected = True
        ws.Protection.SetPassword("1234")
        'منع التعديل
        ws.Protection.AllowDeleteRows = False
        ws.Protection.AllowInsertRows = False
        ws.Protection.AllowFormatCells = False

كلمة المرور في المثال هي "1234" — غيّرها إلى ما تريد.
الخيارات الشائعة للـ Protection التي يمكنك التحكم بها:
AllowSelectLockedCells=trueالسماح بتحديد الخلايا المقفلة
AllowSelectUnlockedCell=strueالسماح بتحديد الخلايا غير المقفلة
AllowInsertRows=falseالسماح بإدراج صفوف
AllowDeleteRows=falseالسماح بحذف صفوف
AllowFormatCells=falseالسماح بتنسيق الخلايا
AllowSort=falseالسماح بالفرز
AllowFilter=falseالسماح باستخدام الفلاتر