منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[VB.NET] كود لتصدير للاكسيل مع الحماية - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (https://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (https://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (https://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [VB.NET] كود لتصدير للاكسيل مع الحماية (/showthread.php?tid=56070)



كود لتصدير للاكسيل مع الحماية - MOHAMMED ALZWI - 02-03-26

السلام عليكم ،،
ارجو المساعدة في كود لتصدير للاكسيل مع الحماية للبيانات  من التعديل 
والسلام عليكم


RE: كود لتصدير للاكسيل مع الحماية - Amir_Alzubidy - 06-03-26

(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



RE: كود لتصدير للاكسيل مع الحماية - MOHAMMED ALZWI - 07-03-26

(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


RE: كود لتصدير للاكسيل مع الحماية - salamandal - 08-03-26

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

كود :
        'حماية الورقة
        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السماح باستخدام الفلاتر