كيفية استيراد بيانات Excel إلى DataGridView في C#
لكي تقوم بإستيراد جدول من Excel وعرضه في DataGridView
في C#، يمكنك استخدام مكتبة Microsoft.Office.Interop.Excel
. قم بتحميل البيانات من Excel ووضعها في DataGridView
.
هنا مثال بسيط لكيفية فعل ذلك:
-
تأثيرات الرسوم المتحركة لعرض البيانات07/03/2024
-
تحديث قواميس Python باستخدام Yield15/03/2024
csharpusing 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
بدلاً من استخدام العناوين الافتراضية، ويمكنك أيضًا تنسيق البيانات قبل عرضها.
هناك بعض الأمور التي يمكنك القيام بها:
-
تعيين عنوان العمود: يمكنك تعيين عناوين الأعمدة في
DataGridView
لتعكس الأعمدة في ملف Excel. يمكنك استخدام عنوان العمود من Excel (excelRange.Cells[1, i].Value.ToString()
) كعنوان للعمود فيDataGridView
. -
تنسيق البيانات: قبل عرض البيانات في
DataGridView
، يمكنك تنسيقها على النحو الذي تريده، مثل تحويل تاريخ من تنسيق Excel إلى تنسيق تاريخDateTime
في C#. -
التحكم في العمود: يمكنك تغيير خصائص العمود في
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 الذي تعمل عليه.