احتاج مساعدة اذا ممكن
كود Vb.net
كيفية حفظ الاصناف من (DataGridView) الى قاعدة بيانات (SQL Server ) .
مثلا عندي اصناف عند العميل وعملت تصدير لها وابغى اعمل استيراد لها في البرنامج
يعني انا عملت كود استيراد الاصناف الى الاكسيل ولكن بعد عرض الاصناف في الداتا جريد فيو كيف احتاج اصدر الاصناف الى الاكسيل واحفظها في قاعدة البيانات sql server لتنزيلها عند عميل اخر
لحفظ الأصناف من DataGridView إلى قاعدة بيانات SQL Server في VB.NET، يمكنك اتباع الخطوات التالية:
استخراج البيانات من DataGridView:
قم بقراءة كل صف من DataGridView واستخراج البيانات. الاتصال بقاعدة البيانات:
قم بإنشاء اتصال بقاعدة البيانات باستخدام SqlConnection. تنفيذ عملية الإدخال:
قم بإعداد أمر SQL لإدخال البيانات في قاعدة البيانات باستخدام SqlCommand. تكرار العملية لكل صف:
قم بتنفيذ أمر الإدخال لكل صف من DataGridView. إليك مثال على كيفية تنفيذ هذه الخطوات:
PHP كود :
Imports System.Data.SqlClient
Private Sub SaveDataGridViewToDatabase() ' نص الاتصال بقاعدة البيانات Dim connectionString As String = "Data Source=YourServerName;Initial Catalog=YourDatabaseName;Integrated Security=True"
' إنشاء الاتصال بقاعدة البيانات Using connection As New SqlConnection(connectionString) ' فتح الاتصال connection.Open()
' بدء المعاملة Dim transaction As SqlTransaction = connection.BeginTransaction()
Try ' إعداد أمر الإدخال Dim insertCommand As New SqlCommand("INSERT INTO YourTableName (Column1, Column2, Column3) VALUES (@Column1, @Column2, @Column3)", connection, transaction)
' قراءة البيانات من DataGridView For Each row As DataGridViewRow In DataGridView1.Rows If Not row.IsNewRow Then ' تعيين القيم للمعاملات insertCommand.Parameters("@Column1").Value = row.Cells("Column1").Value.ToString() insertCommand.Parameters("@Column2").Value = row.Cells("Column2").Value.ToString() insertCommand.Parameters("@Column3").Value = Convert.ToInt32(row.Cells("Column3").Value)
' تنفيذ أمر الإدخال insertCommand.ExecuteNonQuery() End If Next
' تأكيد المعاملة transaction.Commit()
MessageBox.Show("Data saved successfully!") Catch ex As Exception ' إذا حدث خطأ، التراجع عن المعاملة transaction.Rollback() MessageBox.Show("An error occurred: " & ex.Message) End Try End Using End Sub
تأكد من تعديل أسماء الأعمدة (Column1, Column2, Column3) وأسماء الجدول (YourTableName) والاتصال (YourServerName, YourDatabaseName) بما يتناسب مع إعداداتك الخاصة.
بهذا الكود، يمكنك استيراد البيانات من Excel إلى DataGridView، ثم حفظها في قاعدة البيانات باستخدام زر يقوم باستدعاء الدالة SaveDataGridViewToDatabase.
15-07-24, 12:08 AM (آخر تعديل لهذه المشاركة : 15-07-24, 12:11 AM {2} بواسطة Hamza8484.)
(14-07-24, 03:38 PM)تركي الحلواني كتب : أرجو توفير جميع البيانات
عدد الاعمدة في الاكسل
واسم الجدول والحقول في قاعدة البيانات
وما هي الاعمدة المطلوب جلبها وحفظها
شكرا لردك السريع ياغالي
Sql Server 2014
Visual 2019
عدد الاعمدة في الاكسل:
15 صف الاكسيل عند الاستيراد من الداتا جريد
واسم الجدول والحقول في قاعدة البيانات:
Item_Tbl
Item_ID int
ItemBarcode nvarchar(50)
ItemNameA nvarchar(250)
ItemNameE nvarchar(250)
Cat_ID int
Unit_ID int
OpenStock int
ItemLimit int
Is_Buy_Tax bit
Buy_Tax_Value decimal(18, 1)
BuyPrice_NoTax decimal(18, 2)
Buy_TaxTotal decimal(18, 2)
BuyPrice_WithTax decimal(18, 2)
Is_Sale_Tax bit
Sale_Tax_Value decimal(18, 1)
SalePrice_NoTax decimal(18, 2)
Sale_TaxTotal decimal(18, 2)
SalePrice_WithTax decimal(18, 2)
Rbh decimal(18, 2)
Item_Pic image
Item_Status bit
Is_Exp bit
Is_Quick_Item bit
(14-07-24, 09:03 PM)Kamil كتب : وعليكم السلام ورحمة الله وبركاته
لحفظ الأصناف من DataGridView إلى قاعدة بيانات SQL Server في VB.NET، يمكنك اتباع الخطوات التالية:
استخراج البيانات من DataGridView:
قم بقراءة كل صف من DataGridView واستخراج البيانات. الاتصال بقاعدة البيانات:
قم بإنشاء اتصال بقاعدة البيانات باستخدام SqlConnection. تنفيذ عملية الإدخال:
قم بإعداد أمر SQL لإدخال البيانات في قاعدة البيانات باستخدام SqlCommand. تكرار العملية لكل صف:
قم بتنفيذ أمر الإدخال لكل صف من DataGridView. إليك مثال على كيفية تنفيذ هذه الخطوات:
PHP كود :
Imports System.Data.SqlClient
Private Sub SaveDataGridViewToDatabase() ' نص الاتصال بقاعدة البيانات Dim connectionString As String = "Data Source=YourServerName;Initial Catalog=YourDatabaseName;Integrated Security=True"
' إنشاء الاتصال بقاعدة البيانات Using connection As New SqlConnection(connectionString) ' فتح الاتصال connection.Open()
' بدء المعاملة Dim transaction As SqlTransaction = connection.BeginTransaction()
Try ' إعداد أمر الإدخال Dim insertCommand As New SqlCommand("INSERT INTO YourTableName (Column1, Column2, Column3) VALUES (@Column1, @Column2, @Column3)", connection, transaction)
' قراءة البيانات من DataGridView For Each row As DataGridViewRow In DataGridView1.Rows If Not row.IsNewRow Then ' تعيين القيم للمعاملات insertCommand.Parameters("@Column1").Value = row.Cells("Column1").Value.ToString() insertCommand.Parameters("@Column2").Value = row.Cells("Column2").Value.ToString() insertCommand.Parameters("@Column3").Value = Convert.ToInt32(row.Cells("Column3").Value)
' تنفيذ أمر الإدخال insertCommand.ExecuteNonQuery() End If Next
' تأكيد المعاملة transaction.Commit()
MessageBox.Show("Data saved successfully!") Catch ex As Exception ' إذا حدث خطأ، التراجع عن المعاملة transaction.Rollback() MessageBox.Show("An error occurred: " & ex.Message) End Try End Using End Sub
تأكد من تعديل أسماء الأعمدة (Column1, Column2, Column3) وأسماء الجدول (YourTableName) والاتصال (YourServerName, YourDatabaseName) بما يتناسب مع إعداداتك الخاصة.
بهذا الكود، يمكنك استيراد البيانات من Excel إلى DataGridView، ثم حفظها في قاعدة البيانات باستخدام زر يقوم باستدعاء الدالة SaveDataGridViewToDatabas
شكرا لك يا طيب
ولكن هذ الكود ما اشتغل معايا للاسف هذا الكود الي انا شغال عليه :
Imports ExcelDataReader
Imports System.Data.SqlClient
Imports System.IO
Imports Microsoft.Office.Interop
Public Class Frm_Insert_Items
Public Shared Sub SaveGridToExcel(ByVal DGV As DataGridView) ' صب نسخ من الجريد لإكسل
Try
Dim XCELAPP As Microsoft.Office.Interop.Excel.Application = Nothing
Dim XWORKBOOK As Microsoft.Office.Interop.Excel.Workbook = Nothing
Dim XSHEET As Microsoft.Office.Interop.Excel.Worksheet = Nothing
Dim misValue As Object = System.Reflection.Missing.Value
If DGV.Rows.Count > 0 Then
Dim filename As String = ""
Dim SV As New SaveFileDialog()
SV.Filter = "Excel Files|*.xlsx|Excel 2003|*.xls"
If SV.ShowDialog = DialogResult.OK Then
If DGV.RightToLeft = RightToLeft.Yes Then
DGV.RightToLeft = False 'تغيير اتجاه الجريد من اليمين لليسار لكي لا ينسخ بالمقلوب
مرحبا أخي هذا الكود جربه وعدل الباقي بحسب قاعدة البيانات
وتعديل كود الاتصال
يوجد زر لجلب البيانات من اكسل
يوجد زر لحفظ البيانات الى قاعدة البيانات
يوجد زر لعرض البيانات من قاعدة البيانات
يوجد زر لتصدير البيانات الى ملف اكسل
ملاحظة:
هل دائماً الجدول فارغ ام انك تقوم بإضافة البيانات مع البيانات السابقة ام انك تقوم بتفريق الجدول وملئه من ملف الاكسل ام انط تقوم بتعديل البيانات في حال وجودة بحسب رقم الباركود للصنف
أسالة تطرح حتى يتم تعديل الكود بما يتناسب مع العمل الذي تقوم به.
Public Class Form3 Private Sub ButtonImport_Click(sender As Object, e As EventArgs) Handles ButtonImport.Click Dim openFileDialog As New OpenFileDialog() openFileDialog.Filter = "Excel Files|*.xls;*.xlsx;*.xlsm" If openFileDialog.ShowDialog() = DialogResult.OK Then ImportExcelToDataGridView(openFileDialog.FileName) End If End Sub
Private Sub ImportExcelToDataGridView(ByVal filePath As String) Dim excelApp As New Excel.Application() Dim excelWorkbook As Excel.Workbook = excelApp.Workbooks.Open(filePath) Dim excelWorksheet As Excel.Worksheet = CType(excelWorkbook.Sheets(1), Excel.Worksheet) Dim excelRange As Excel.Range = excelWorksheet.UsedRange
' قراءة السطر الأول كعناوين الأعمدة For col As Integer = 1 To 15 DataGridView1.Columns.Add(Convert.ToString(excelRange.Cells(1, col).Value2), Convert.ToString(excelRange.Cells(1, col).Value2)) Next
' قراءة البيانات من السطر الثاني For row As Integer = 2 To excelRange.Rows.Count Dim isRowEmpty As Boolean = True Dim rowData(14) As String ' مصفوفة لاستيعاب بيانات الصف
For col As Integer = 1 To 15 Dim cellValue As String = Convert.ToString(excelRange.Cells(row, col).Value2) rowData(col - 1) = cellValue If Not String.IsNullOrWhiteSpace(cellValue) Then isRowEmpty = False End If Next
If Not isRowEmpty Then DataGridView1.Rows.Add(rowData) End If Next
excelWorkbook.Close(False) excelApp.Quit()
ReleaseObject(excelRange) ReleaseObject(excelWorksheet) ReleaseObject(excelWorkbook) ReleaseObject(excelApp) End Sub
Private Sub ButtonSave_Click(sender As Object, e As EventArgs) Handles ButtonSave.Click SaveDataGridViewToDatabase() End Sub
Private Sub ButtonLoad_Click(sender As Object, e As EventArgs) Handles ButtonLoad.Click LoadDataFromDatabase() End Sub
Private Sub ButtonExport_Click(sender As Object, e As EventArgs) Handles ButtonExport.Click ExportDataGridViewToExcel() End Sub
Private Sub SaveDataGridViewToDatabase() Dim connectionString As String = "Data Source=.;Initial Catalog=DATABASE;Integrated Security=True" Using cn As New SqlConnection(connectionString) cn.Open() For Each row As DataGridViewRow In DataGridView1.Rows If Not row.IsNewRow Then Using cm As New SqlCommand("INSERT INTO Item_Tbl (ItemBarcode , ItemNameA , ItemNameE , ..., Column15) VALUES (@ItemBarcode , @ItemNameA , @ItemNameE, ..., @val15)", cn) cm.Parameters.AddWithValue("@ItemBarcode", row.Cells(0).Value) cm.Parameters.AddWithValue("@ItemNameA", row.Cells(1).Value) cm.Parameters.AddWithValue("@ItemNameE", row.Cells(2).Value) '... cm.Parameters.AddWithValue("@val15", row.Cells(14).Value) cm.ExecuteNonQuery() End Using End If Next End Using MessageBox.Show("Data saved successfully!") End Sub Private Sub LoadDataFromDatabase() Dim connectionString As String = "Data Source=.;Initial Catalog=DATABASE;Integrated Security=True" Using cn As New SqlConnection(connectionString) Dim query As String = "SELECT * FROM Item_Tbl" Dim da As New SqlDataAdapter(query, cn) Dim dt As New DataTable() da.Fill(dt) DataGridView1.DataSource = dt End Using End Sub
Private Sub ExportDataGridViewToExcel() Dim excelApp As New Excel.Application() Dim excelWorkbook As Excel.Workbook = excelApp.Workbooks.Add() Dim excelWorksheet As Excel.Worksheet = CType(excelWorkbook.Sheets(1), Excel.Worksheet)
' إضافة عناوين الأعمدة For col As Integer = 0 To DataGridView1.Columns.Count - 1 excelWorksheet.Cells(1, col + 1).Value = DataGridView1.Columns(col).HeaderText Next
' إضافة البيانات For row As Integer = 0 To DataGridView1.Rows.Count - 1 For col As Integer = 0 To DataGridView1.Columns.Count - 1 excelWorksheet.Cells(row + 2, col + 1).Value = DataGridView1.Rows(row).Cells(col).Value Next Next
' حفظ الملف Dim saveFileDialog As New SaveFileDialog() saveFileDialog.Filter = "Excel Files|*.xls;*.xlsx;*.xlsm" If saveFileDialog.ShowDialog() = DialogResult.OK Then excelWorkbook.SaveAs(saveFileDialog.FileName) excelWorkbook.Close() excelApp.Quit() MessageBox.Show("Data exported successfully!") End If
ReleaseObject(excelWorksheet) ReleaseObject(excelWorkbook) ReleaseObject(excelApp) End Sub
Private Sub ReleaseObject(ByVal obj As Object) Try System.Runtime.InteropServices.Marshal.ReleaseComObject(obj) obj = Nothing Catch ex As Exception obj = Nothing Finally GC.Collect() End Try End Sub
15-07-24, 03:42 PM (آخر تعديل لهذه المشاركة : 16-07-24, 05:46 AM {2} بواسطة Hamza8484.)
(15-07-24, 10:44 AM)تركي الحلواني كتب : مرحبا أخي هذا الكود جربه وعدل الباقي بحسب قاعدة البيانات
وتعديل كود الاتصال
يوجد زر لجلب البيانات من اكسل
يوجد زر لحفظ البيانات الى قاعدة البيانات
يوجد زر لعرض البيانات من قاعدة البيانات
يوجد زر لتصدير البيانات الى ملف اكسل
ملاحظة:
هل دائماً الجدول فارغ ام انك تقوم بإضافة البيانات مع البيانات السابقة ام انك تقوم بتفريق الجدول وملئه من ملف الاكسل ام انط تقوم بتعديل البيانات في حال وجودة بحسب رقم الباركود للصنف
أسالة تطرح حتى يتم تعديل الكود بما يتناسب مع العمل الذي تقوم به.
Public Class Form3 Private Sub ButtonImport_Click(sender As Object, e As EventArgs) Handles ButtonImport.Click Dim openFileDialog As New OpenFileDialog() openFileDialog.Filter = "Excel Files|*.xls;*.xlsx;*.xlsm" If openFileDialog.ShowDialog() = DialogResult.OK Then ImportExcelToDataGridView(openFileDialog.FileName) End If End Sub
Private Sub ImportExcelToDataGridView(ByVal filePath As String) Dim excelApp As New Excel.Application() Dim excelWorkbook As Excel.Workbook = excelApp.Workbooks.Open(filePath) Dim excelWorksheet As Excel.Worksheet = CType(excelWorkbook.Sheets(1), Excel.Worksheet) Dim excelRange As Excel.Range = excelWorksheet.UsedRange
' قراءة السطر الأول كعناوين الأعمدة For col As Integer = 1 To 15 DataGridView1.Columns.Add(Convert.ToString(excelRange.Cells(1, col).Value2), Convert.ToString(excelRange.Cells(1, col).Value2)) Next
' قراءة البيانات من السطر الثاني For row As Integer = 2 To excelRange.Rows.Count Dim isRowEmpty As Boolean = True Dim rowData(14) As String ' مصفوفة لاستيعاب بيانات الصف
For col As Integer = 1 To 15 Dim cellValue As String = Convert.ToString(excelRange.Cells(row, col).Value2) rowData(col - 1) = cellValue If Not String.IsNullOrWhiteSpace(cellValue) Then isRowEmpty = False End If Next
If Not isRowEmpty Then DataGridView1.Rows.Add(rowData) End If Next
excelWorkbook.Close(False) excelApp.Quit()
ReleaseObject(excelRange) ReleaseObject(excelWorksheet) ReleaseObject(excelWorkbook) ReleaseObject(excelApp) End Sub
Private Sub ButtonSave_Click(sender As Object, e As EventArgs) Handles ButtonSave.Click SaveDataGridViewToDatabase() End Sub
Private Sub ButtonLoad_Click(sender As Object, e As EventArgs) Handles ButtonLoad.Click LoadDataFromDatabase() End Sub
Private Sub ButtonExport_Click(sender As Object, e As EventArgs) Handles ButtonExport.Click ExportDataGridViewToExcel() End Sub
Private Sub SaveDataGridViewToDatabase() Dim connectionString As String = "Data Source=.;Initial Catalog=DATABASE;Integrated Security=True" Using cn As New SqlConnection(connectionString) cn.Open() For Each row As DataGridViewRow In DataGridView1.Rows If Not row.IsNewRow Then Using cm As New SqlCommand("INSERT INTO Item_Tbl (ItemBarcode , ItemNameA , ItemNameE , ..., Column15) VALUES (@ItemBarcode , @ItemNameA , @ItemNameE, ..., @val15)", cn) cm.Parameters.AddWithValue("@ItemBarcode", row.Cells(0).Value) cm.Parameters.AddWithValue("@ItemNameA", row.Cells(1).Value) cm.Parameters.AddWithValue("@ItemNameE", row.Cells(2).Value) '... cm.Parameters.AddWithValue("@val15", row.Cells(14).Value) cm.ExecuteNonQuery() End Using End If Next End Using MessageBox.Show("Data saved successfully!") End Sub Private Sub LoadDataFromDatabase() Dim connectionString As String = "Data Source=.;Initial Catalog=DATABASE;Integrated Security=True" Using cn As New SqlConnection(connectionString) Dim query As String = "SELECT * FROM Item_Tbl" Dim da As New SqlDataAdapter(query, cn) Dim dt As New DataTable() da.Fill(dt) DataGridView1.DataSource = dt End Using End Sub
Private Sub ExportDataGridViewToExcel() Dim excelApp As New Excel.Application() Dim excelWorkbook As Excel.Workbook = excelApp.Workbooks.Add() Dim excelWorksheet As Excel.Worksheet = CType(excelWorkbook.Sheets(1), Excel.Worksheet)
' إضافة عناوين الأعمدة For col As Integer = 0 To DataGridView1.Columns.Count - 1 excelWorksheet.Cells(1, col + 1).Value = DataGridView1.Columns(col).HeaderText Next
' إضافة البيانات For row As Integer = 0 To DataGridView1.Rows.Count - 1 For col As Integer = 0 To DataGridView1.Columns.Count - 1 excelWorksheet.Cells(row + 2, col + 1).Value = DataGridView1.Rows(row).Cells(col).Value Next Next
' حفظ الملف Dim saveFileDialog As New SaveFileDialog() saveFileDialog.Filter = "Excel Files|*.xls;*.xlsx;*.xlsm" If saveFileDialog.ShowDialog() = DialogResult.OK Then excelWorkbook.SaveAs(saveFileDialog.FileName) excelWorkbook.Close() excelApp.Quit() MessageBox.Show("Data exported successfully!") End If
ReleaseObject(excelWorksheet) ReleaseObject(excelWorkbook) ReleaseObject(excelApp) End Sub
Private Sub ReleaseObject(ByVal obj As Object) Try System.Runtime.InteropServices.Marshal.ReleaseComObject(obj) obj = Nothing Catch ex As Exception obj = Nothing Finally GC.Collect() End Try End Sub
End Class
شكرا لك يا اخي الكريم اقدر لك مساعدتك
طبعا انزل البرنامج على الجهاز واضيف اصناف عدد كبير لانه سوبر ماركت فاحتاج اخذ نسخة من الاصناف احتياط وكل ما اضفت اصناف على البرنامج اخذ نسخة اكسيل مرات كثير احتاج افلات الجهاز او اي عطل في الجهاز لذلك اعمل تصدير للاصناف الى قاعدة البيانات .
وقد احتاج الاصناف في جهاز اخر .
اليوم اشتغلت على الكود واشتغل معايا ولكن في مشكلتين :
1- عند الضغط على رز فتح الاكسل وتنزيل ملف الاصناف اذا كان عدد كبير من الاصناف ( يعلق ) ولازم اغلق البرنامج .اذاكان عدد اصناف عدد قليل ينزل على الداتاجريد عادي
2- عند الحفظ اذا كان فيه اي بيانات يحدث خطأ( 'Violation of PRIMARY KEY constraint 'PK_Item_Tbl'. Cannot insert duplicate key in object 'dbo.Item_Tbl'. The duplicate key value is (10000001).
The statement has been terminated.')
Public Class Form3 Private Sub ButtonImport_Click(sender As Object, e As EventArgs) Handles ButtonImport.Click Dim openFileDialog As New OpenFileDialog() openFileDialog.Filter = "Excel Files|*.xls;*.xlsx;*.xlsm" If openFileDialog.ShowDialog() = DialogResult.OK Then ImportExcelToDataGridView(openFileDialog.FileName) End If End Sub
Private Sub ImportExcelToDataGridView(ByVal filePath As String) Dim conStr As String = "" Dim extension As String = IO.Path.GetExtension(filePath)
Select Case extension Case ".xls" conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & filePath & ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1;'" Case ".xlsx" conStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & filePath & ";Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1;'" End Select
Using con As New OleDbConnection(conStr) Using cmd As New OleDbCommand("SELECT * FROM [Sheet1$]", con) con.Open() Dim dt As New DataTable() Using da As New OleDbDataAdapter(cmd) da.Fill(dt) DataGridView1.DataSource = dt End Using con.Close() End Using End Using End Sub
Private Sub ButtonSave_Click(sender As Object, e As EventArgs) Handles ButtonSave.Click SaveDataGridViewToDatabase() End Sub
Private Sub ButtonLoad_Click(sender As Object, e As EventArgs) Handles ButtonLoad.Click LoadDataFromDatabase() End Sub
Private Sub ButtonExport_Click(sender As Object, e As EventArgs) Handles ButtonExport.Click ExportDataGridViewToExcel() End Sub
Private Sub SaveDataGridViewToDatabase() Dim connectionString As String = "Data Source=.;Initial Catalog=DATABASE;Integrated Security=True" Using cn As New SqlConnection(connectionString) cn.Open() For Each row As DataGridViewRow In DataGridView1.Rows If Not row.IsNewRow Then Using cm As New SqlCommand("INSERT INTO Item_Tbl (ItemBarcode, ItemNameA, ItemNameE, ..., Column15) VALUES (@ItemBarcode, @ItemNameA, @ItemNameE, ..., @val15)", cn) cm.Parameters.AddWithValue("@ItemBarcode", row.Cells(0).Value) cm.Parameters.AddWithValue("@ItemNameA", row.Cells(1).Value) cm.Parameters.AddWithValue("@ItemNameE", row.Cells(2).Value) '... cm.Parameters.AddWithValue("@val15", row.Cells(14).Value) cm.ExecuteNonQuery() End Using End If Next End Using MessageBox.Show("Data saved successfully!") End Sub
Private Sub LoadDataFromDatabase() Dim connectionString As String = "Data Source=.;Initial Catalog=DATABASE;Integrated Security=True" Using cn As New SqlConnection(connectionString) Dim query As String = "SELECT * FROM Item_Tbl" Dim da As New SqlDataAdapter(query, cn) Dim dt As New DataTable() da.Fill(dt) DataGridView1.DataSource = dt End Using End Sub
Private Sub ExportDataGridViewToExcel() Dim excelApp As New Excel.Application() Dim excelWorkbook As Excel.Workbook = excelApp.Workbooks.Add() Dim excelWorksheet As Excel.Worksheet = CType(excelWorkbook.Sheets(1), Excel.Worksheet)
' إضافة عناوين الأعمدة For col As Integer = 0 To DataGridView1.Columns.Count - 1 excelWorksheet.Cells(1, col + 1).Value = DataGridView1.Columns(col).HeaderText Next
' إضافة البيانات For row As Integer = 0 To DataGridView1.Rows.Count - 1 For col As Integer = 0 To DataGridView1.Columns.Count - 1 excelWorksheet.Cells(row + 2, col + 1).Value = DataGridView1.Rows(row).Cells(col).Value Next Next
' حفظ الملف Dim saveFileDialog As New SaveFileDialog() saveFileDialog.Filter = "Excel Files|*.xls;*.xlsx;*.xlsm" If saveFileDialog.ShowDialog() = DialogResult.OK Then excelWorkbook.SaveAs(saveFileDialog.FileName) excelWorkbook.Close() excelApp.Quit() MessageBox.Show("Data exported successfully!") End If
ReleaseObject(excelWorksheet) ReleaseObject(excelWorkbook) ReleaseObject(excelApp) End Sub
Private Sub ReleaseObject(ByVal obj As Object) Try System.Runtime.InteropServices.Marshal.ReleaseComObject(obj) obj = Nothing Catch ex As Exception obj = Nothing Finally GC.Collect() End Try End Sub End Class
Public Class Form3 Private Sub ButtonImport_Click(sender As Object, e As EventArgs) Handles ButtonImport.Click Dim openFileDialog As New OpenFileDialog() openFileDialog.Filter = "Excel Files|*.xls;*.xlsx;*.xlsm" If openFileDialog.ShowDialog() = DialogResult.OK Then ImportExcelToDataGridView(openFileDialog.FileName) End If End Sub
Private Sub ImportExcelToDataGridView(ByVal filePath As String) Dim conStr As String = "" Dim extension As String = IO.Path.GetExtension(filePath)
Select Case extension Case ".xls" conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & filePath & ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1;'" Case ".xlsx" conStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & filePath & ";Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1;'" End Select
Using con As New OleDbConnection(conStr) Using cmd As New OleDbCommand("SELECT * FROM [Sheet1$]", con) con.Open() Dim dt As New DataTable() Using da As New OleDbDataAdapter(cmd) da.Fill(dt) DataGridView1.DataSource = dt End Using con.Close() End Using End Using End Sub
Private Sub ButtonSave_Click(sender As Object, e As EventArgs) Handles ButtonSave.Click SaveDataGridViewToDatabase() End Sub
Private Sub ButtonLoad_Click(sender As Object, e As EventArgs) Handles ButtonLoad.Click LoadDataFromDatabase() End Sub
Private Sub ButtonExport_Click(sender As Object, e As EventArgs) Handles ButtonExport.Click ExportDataGridViewToExcel() End Sub
Private Sub SaveDataGridViewToDatabase() Dim connectionString As String = "Data Source=.;Initial Catalog=DATABASE;Integrated Security=True" Using cn As New SqlConnection(connectionString) cn.Open() For Each row As DataGridViewRow In DataGridView1.Rows If Not row.IsNewRow Then Using cm As New SqlCommand("INSERT INTO Item_Tbl (ItemBarcode, ItemNameA, ItemNameE, ..., Column15) VALUES (@ItemBarcode, @ItemNameA, @ItemNameE, ..., @val15)", cn) cm.Parameters.AddWithValue("@ItemBarcode", row.Cells(0).Value) cm.Parameters.AddWithValue("@ItemNameA", row.Cells(1).Value) cm.Parameters.AddWithValue("@ItemNameE", row.Cells(2).Value) '... cm.Parameters.AddWithValue("@val15", row.Cells(14).Value) cm.ExecuteNonQuery() End Using End If Next End Using MessageBox.Show("Data saved successfully!") End Sub
Private Sub LoadDataFromDatabase() Dim connectionString As String = "Data Source=.;Initial Catalog=DATABASE;Integrated Security=True" Using cn As New SqlConnection(connectionString) Dim query As String = "SELECT * FROM Item_Tbl" Dim da As New SqlDataAdapter(query, cn) Dim dt As New DataTable() da.Fill(dt) DataGridView1.DataSource = dt End Using End Sub
Private Sub ExportDataGridViewToExcel() Dim excelApp As New Excel.Application() Dim excelWorkbook As Excel.Workbook = excelApp.Workbooks.Add() Dim excelWorksheet As Excel.Worksheet = CType(excelWorkbook.Sheets(1), Excel.Worksheet)
' إضافة عناوين الأعمدة For col As Integer = 0 To DataGridView1.Columns.Count - 1 excelWorksheet.Cells(1, col + 1).Value = DataGridView1.Columns(col).HeaderText Next
' إضافة البيانات For row As Integer = 0 To DataGridView1.Rows.Count - 1 For col As Integer = 0 To DataGridView1.Columns.Count - 1 excelWorksheet.Cells(row + 2, col + 1).Value = DataGridView1.Rows(row).Cells(col).Value Next Next
' حفظ الملف Dim saveFileDialog As New SaveFileDialog() saveFileDialog.Filter = "Excel Files|*.xls;*.xlsx;*.xlsm" If saveFileDialog.ShowDialog() = DialogResult.OK Then excelWorkbook.SaveAs(saveFileDialog.FileName) excelWorkbook.Close() excelApp.Quit() MessageBox.Show("Data exported successfully!") End If
ReleaseObject(excelWorksheet) ReleaseObject(excelWorkbook) ReleaseObject(excelApp) End Sub
Private Sub ReleaseObject(ByVal obj As Object) Try System.Runtime.InteropServices.Marshal.ReleaseComObject(obj) obj = Nothing Catch ex As Exception obj = Nothing Finally GC.Collect() End Try End Sub End Class
Public Class Form3 Private Sub ButtonImport_Click(sender As Object, e As EventArgs) Handles ButtonImport.Click Dim openFileDialog As New OpenFileDialog() openFileDialog.Filter = "Excel Files|*.xls;*.xlsx;*.xlsm" If openFileDialog.ShowDialog() = DialogResult.OK Then ImportExcelToDataGridView(openFileDialog.FileName) End If End Sub
Private Sub ImportExcelToDataGridView(ByVal filePath As String) Try Using stream = File.Open(filePath, FileMode.Open, FileAccess.Read) Dim excelReader As IExcelDataReader = ExcelReaderFactory.CreateReader(stream) Dim result As DataSet = excelReader.AsDataSet(New ExcelDataSetConfiguration() With { .ConfigureDataTable = Function(__) New ExcelDataTableConfiguration() With { .UseHeaderRow = True } })
Dim dataTable As DataTable = result.Tables(0) DataGridView1.DataSource = dataTable excelReader.Close() End Using Catch ex As Exception MessageBox.Show("Error importing Excel file: " & ex.Message) End Try End Sub
Private Sub ButtonSave_Click(sender As Object, e As EventArgs) Handles ButtonSave.Click SaveDataGridViewToDatabase() End Sub
Private Sub ButtonLoad_Click(sender As Object, e As EventArgs) Handles ButtonLoad.Click LoadDataFromDatabase() End Sub
Private Sub ButtonExport_Click(sender As Object, e As EventArgs) Handles ButtonExport.Click ExportDataGridViewToExcel() End Sub
Private Sub SaveDataGridViewToDatabase() Dim connectionString As String = "Data Source=.;Initial Catalog=DATABASE;Integrated Security=True" Using cn As New SqlConnection(connectionString) cn.Open() For Each row As DataGridViewRow In DataGridView1.Rows If Not row.IsNewRow Then Using cm As New SqlCommand("INSERT INTO Item_Tbl (ItemBarcode, ItemNameA, ItemNameE, ..., Column15) VALUES (@ItemBarcode, @ItemNameA, @ItemNameE, ..., @val15)", cn) cm.Parameters.AddWithValue("@ItemBarcode", row.Cells(0).Value) cm.Parameters.AddWithValue("@ItemNameA", row.Cells(1).Value) cm.Parameters.AddWithValue("@ItemNameE", row.Cells(2).Value) '... cm.Parameters.AddWithValue("@val15", row.Cells(14).Value) cm.ExecuteNonQuery() End Using End If Next End Using MessageBox.Show("Data saved successfully!") End Sub
Private Sub LoadDataFromDatabase() Dim connectionString As String = "Data Source=.;Initial Catalog=DATABASE;Integrated Security=True" Using cn As New SqlConnection(connectionString) Dim query As String = "SELECT * FROM Item_Tbl" Dim da As New SqlDataAdapter(query, cn) Dim dt As New DataTable() da.Fill(dt) DataGridView1.DataSource = dt End Using End Sub
Private Sub ExportDataGridViewToExcel() Dim excelApp As New Excel.Application() Dim excelWorkbook As Excel.Workbook = excelApp.Workbooks.Add() Dim excelWorksheet As Excel.Worksheet = CType(excelWorkbook.Sheets(1), Excel.Worksheet)
' إضافة عناوين الأعمدة For col As Integer = 0 To DataGridView1.Columns.Count - 1 excelWorksheet.Cells(1, col + 1).Value = DataGridView1.Columns(col).HeaderText Next
' إضافة البيانات For row As Integer = 0 To DataGridView1.Rows.Count - 1 For col As Integer = 0 To DataGridView1.Columns.Count - 1 excelWorksheet.Cells(row + 2, col + 1).Value = DataGridView1.Rows(row).Cells(col).Value Next Next
' حفظ الملف Dim saveFileDialog As New SaveFileDialog() saveFileDialog.Filter = "Excel Files|*.xls;*.xlsx;*.xlsm" If saveFileDialog.ShowDialog() = DialogResult.OK Then excelWorkbook.SaveAs(saveFileDialog.FileName) excelWorkbook.Close() excelApp.Quit() MessageBox.Show("Data exported successfully!") End If
ReleaseObject(excelWorksheet) ReleaseObject(excelWorkbook) ReleaseObject(excelApp) End Sub
Private Sub ReleaseObject(ByVal obj As Object) Try System.Runtime.InteropServices.Marshal.ReleaseComObject(obj) obj = Nothing Catch ex As Exception obj = Nothing Finally GC.Collect() End Try End Sub End Class
Public Class Form3 Private Sub ButtonImport_Click(sender As Object, e As EventArgs) Handles ButtonImport.Click Dim openFileDialog As New OpenFileDialog() openFileDialog.Filter = "Excel Files|*.xls;*.xlsx;*.xlsm" If openFileDialog.ShowDialog() = DialogResult.OK Then ImportExcelToDataGridView(openFileDialog.FileName) End If End Sub
Private Sub ImportExcelToDataGridView(ByVal filePath As String) Try Using stream = File.Open(filePath, FileMode.Open, FileAccess.Read) Dim excelReader As IExcelDataReader = ExcelReaderFactory.CreateReader(stream) Dim result As DataSet = excelReader.AsDataSet(New ExcelDataSetConfiguration() With { .ConfigureDataTable = Function(__) New ExcelDataTableConfiguration() With { .UseHeaderRow = True } })
Dim dataTable As DataTable = result.Tables(0) DataGridView1.DataSource = dataTable excelReader.Close() End Using Catch ex As Exception MessageBox.Show("Error importing Excel file: " & ex.Message) End Try End Sub
Private Sub ButtonSave_Click(sender As Object, e As EventArgs) Handles ButtonSave.Click SaveDataGridViewToDatabase() End Sub
Private Sub ButtonLoad_Click(sender As Object, e As EventArgs) Handles ButtonLoad.Click LoadDataFromDatabase() End Sub
Private Sub ButtonExport_Click(sender As Object, e As EventArgs) Handles ButtonExport.Click ExportDataGridViewToExcel() End Sub
Private Sub SaveDataGridViewToDatabase() Dim connectionString As String = "Data Source=.;Initial Catalog=DATABASE;Integrated Security=True" Using cn As New SqlConnection(connectionString) cn.Open() For Each row As DataGridViewRow In DataGridView1.Rows If Not row.IsNewRow Then Using cm As New SqlCommand("INSERT INTO Item_Tbl (ItemBarcode, ItemNameA, ItemNameE, ..., Column15) VALUES (@ItemBarcode, @ItemNameA, @ItemNameE, ..., @val15)", cn) cm.Parameters.AddWithValue("@ItemBarcode", row.Cells(0).Value) cm.Parameters.AddWithValue("@ItemNameA", row.Cells(1).Value) cm.Parameters.AddWithValue("@ItemNameE", row.Cells(2).Value) '... cm.Parameters.AddWithValue("@val15", row.Cells(14).Value) cm.ExecuteNonQuery() End Using End If Next End Using MessageBox.Show("Data saved successfully!") End Sub
Private Sub LoadDataFromDatabase() Dim connectionString As String = "Data Source=.;Initial Catalog=DATABASE;Integrated Security=True" Using cn As New SqlConnection(connectionString) Dim query As String = "SELECT * FROM Item_Tbl" Dim da As New SqlDataAdapter(query, cn) Dim dt As New DataTable() da.Fill(dt) DataGridView1.DataSource = dt End Using End Sub
Private Sub ExportDataGridViewToExcel() Dim excelApp As New Excel.Application() Dim excelWorkbook As Excel.Workbook = excelApp.Workbooks.Add() Dim excelWorksheet As Excel.Worksheet = CType(excelWorkbook.Sheets(1), Excel.Worksheet)
' إضافة عناوين الأعمدة For col As Integer = 0 To DataGridView1.Columns.Count - 1 excelWorksheet.Cells(1, col + 1).Value = DataGridView1.Columns(col).HeaderText Next
' إضافة البيانات For row As Integer = 0 To DataGridView1.Rows.Count - 1 For col As Integer = 0 To DataGridView1.Columns.Count - 1 excelWorksheet.Cells(row + 2, col + 1).Value = DataGridView1.Rows(row).Cells(col).Value Next Next
' حفظ الملف Dim saveFileDialog As New SaveFileDialog() saveFileDialog.Filter = "Excel Files|*.xls;*.xlsx;*.xlsm" If saveFileDialog.ShowDialog() = DialogResult.OK Then excelWorkbook.SaveAs(saveFileDialog.FileName) excelWorkbook.Close() excelApp.Quit() MessageBox.Show("Data exported successfully!") End If
ReleaseObject(excelWorksheet) ReleaseObject(excelWorkbook) ReleaseObject(excelApp) End Sub
Private Sub ReleaseObject(ByVal obj As Object) Try System.Runtime.InteropServices.Marshal.ReleaseComObject(obj) obj = Nothing Catch ex As Exception obj = Nothing Finally GC.Collect() End Try End Sub End Class
تم التجربة ويعمل بشكل جيد وسريع
السلام عليكم
شكرا لك اخي الكريم ومقدر تعبك معايا
وان شاء الله في ميزان حسناتك
الكود مش راضي يضبط معايا عند استيراد الاصناف ممتاز ما في اي مشكلة . ولكن عند عملية الحفظ تظهر لي هذه الرسالة :