البرمجة

كيفية استيراد بيانات Excel إلى DataGridView في C#

لكي تقوم بإستيراد جدول من Excel وعرضه في DataGridView في C#، يمكنك استخدام مكتبة Microsoft.Office.Interop.Excel. قم بتحميل البيانات من Excel ووضعها في DataGridView.

هنا مثال بسيط لكيفية فعل ذلك:

csharp
using System; using System.Data; using System.Windows.Forms; using Excel = Microsoft.Office.Interop.Excel; namespace ExcelToDataGridView { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btnImport_Click(object sender, EventArgs e) { OpenFileDialog dialog = new OpenFileDialog(); dialog.Filter = "Excel Files|*.xls;*.xlsx;*.xlsm"; dialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); if (dialog.ShowDialog() == DialogResult.OK) { string filePath = dialog.FileName; Excel.Application excelApp = new Excel.Application(); Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(filePath); Excel.Worksheet excelWorksheet = excelWorkbook.Sheets[1]; Excel.Range excelRange = excelWorksheet.UsedRange; DataTable dt = new DataTable(); for (int i = 1; i <= excelRange.Columns.Count; i++) { dt.Columns.Add(excelRange.Cells[1, i].Value.ToString()); } for (int row = 2; row <= excelRange.Rows.Count; row++) { DataRow dataRow = dt.NewRow(); for (int col = 1; col <= excelRange.Columns.Count; col++) { dataRow[col - 1] = excelRange.Cells[row, col].Value; } dt.Rows.Add(dataRow); } excelWorkbook.Close(); excelApp.Quit(); dataGridView1.DataSource = dt; } } } }

في هذا المثال، عند النقر على زر btnImport، سيتم فتح مربع حوار لاختيار ملف Excel. بعد تحديد الملف، سيتم فتح الملف وقراءة البيانات من الجدول الأول في الملف، ثم سيتم عرضها في DataGridView.

المزيد من المعلومات

لإضافة المزيد من المعلومات إلى الكود، يمكنك التحكم في كيفية عرض البيانات في DataGridView. على سبيل المثال، يمكنك تعيين عنوان العمود الذي يظهر في DataGridView بدلاً من استخدام العناوين الافتراضية، ويمكنك أيضًا تنسيق البيانات قبل عرضها.

هناك بعض الأمور التي يمكنك القيام بها:

  1. تعيين عنوان العمود: يمكنك تعيين عناوين الأعمدة في DataGridView لتعكس الأعمدة في ملف Excel. يمكنك استخدام عنوان العمود من Excel (excelRange.Cells[1, i].Value.ToString()) كعنوان للعمود في DataGridView.

  2. تنسيق البيانات: قبل عرض البيانات في DataGridView، يمكنك تنسيقها على النحو الذي تريده، مثل تحويل تاريخ من تنسيق Excel إلى تنسيق تاريخ DateTime في C#.

  3. التحكم في العمود: يمكنك تغيير خصائص العمود في DataGridView مثل تعيين عرض العمود، وجعله قابلًا للتحرير، وإخفاء العمود، إلخ.

هذا مثال يوضح كيفية تعيين عناوين الأعمدة وتنسيق البيانات قبل عرضها في DataGridView:

csharp
// تعيين عناوين الأعمدة for (int i = 1; i <= excelRange.Columns.Count; i++) { dt.Columns.Add($"Column {i}"); } // تحويل تاريخ Excel إلى تنسيق تاريخ C# for (int col = 1; col <= excelRange.Columns.Count; col++) { if (DateTime.TryParse(excelRange.Cells[1, col].Value.ToString(), out DateTime dateValue)) { dt.Columns[col - 1].DataType = typeof(DateTime); } } // قراءة البيانات وتنسيقها for (int row = 2; row <= excelRange.Rows.Count; row++) { DataRow dataRow = dt.NewRow(); for (int col = 1; col <= excelRange.Columns.Count; col++) { if (dt.Columns[col - 1].DataType == typeof(DateTime)) { if (DateTime.TryParse(excelRange.Cells[row, col].Value.ToString(), out DateTime dateValue)) { dataRow[col - 1] = dateValue; } else { // تنسيق تاريخ الخطأ dataRow[col - 1] = DBNull.Value; } } else { dataRow[col - 1] = excelRange.Cells[row, col].Value; } } dt.Rows.Add(dataRow); }

هذا الكود يعتمد على افتراض أن البيانات في Excel لها تنسيق محدد، لذا يجب عليك تعديله وفقًا لتنسيق البيانات الفعلي في Excel الذي تعمل عليه.

زر الذهاب إلى الأعلى