02-03-26, 01:29 PM
06-03-26, 12:01 AM
(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(filePath, package.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 i = 0 To DataGridView1.Columns.Count - 1
dr(i) = row.Cells(i).Value
Next
dt.Rows.Add(dr)
End If
Next
ExportToExcel(dt)
07-03-26, 11:30 PM
(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(filePath, package.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 i = 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
08-03-26, 01:05 PM
الاسطر المسؤولة عن الحماية موجودة في الكود السابق
كلمة المرور في المثال هي "1234" — غيّرها إلى ما تريد.
الخيارات الشائعة للـ Protection التي يمكنك التحكم بها:
AllowSelectLockedCells=trueالسماح بتحديد الخلايا المقفلة
AllowSelectUnlockedCell=strueالسماح بتحديد الخلايا غير المقفلة
AllowInsertRows=falseالسماح بإدراج صفوف
AllowDeleteRows=falseالسماح بحذف صفوف
AllowFormatCells=falseالسماح بتنسيق الخلايا
AllowSort=falseالسماح بالفرز
AllowFilter=falseالسماح باستخدام الفلاتر
كود :
'حماية الورقة
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السماح باستخدام الفلاتر