اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

مرحباً@محمد علي23

يمكنك إستخدام حزمة Npoi.Mapper مخصصة لهذا الغرض وكيفية الإستخدام عملت كود بسيط لإستيراد ملف إكسل يمكنك إضافته والتعديل عليه بما يتناسب مع البرنامج الخاص بك مثلأ تعديل أسماء الحقول المراد إستيرادها من ملف الإكسل الخاص بك مثال هكذا 

using System.IO;
using System.Linq;
using Npoi.Mapper;
using Npoi.Mapper.Attributes;
using NPOI.SS.UserModel;
using UserManagementService.Models;

namespace JobCustomerImport.Processors
{
    public class ExcelEmailProcessor
    {
        private UserManagementServiceContext DataContext { get; }

        public ExcelEmailProcessor(int customerNumber)
        {
            DataContext = new UserManagementServiceContext();
        }

        public void Execute(string localPath, int sheetIndex)
        {
            IWorkbook workbook;
            using (FileStream file = new FileStream(localPath, FileMode.Open, FileAccess.Read))
            {
                workbook = WorkbookFactory.Create(file);
            }

            var importer = new Mapper(workbook);
            var items = importer.Take<MurphyExcelFormat>(sheetIndex);
            foreach(var item in items)
            {
                var row = item.Value;
                if (string.IsNullOrEmpty(row.EmailAddress))
                    continue;

                UpdateUser(row);
            }

            DataContext.SaveChanges();
        }

        private void UpdateUser(MurphyExcelFormat row)
        {
            //LOGIC HERE TO UPDATE A USER IN DATABASE...
        }

        private class MurphyExcelFormat
        {
            [Column("District")]
            public int District { get; set; }

            [Column("DM")]
            public string FullName { get; set; }

            [Column("Email Address")]
            public string EmailAddress { get; set; }

            [Column(3)]
            public string Username { get; set; }

            public string FirstName
            {
                get
                {
                    return Username.Split('.')[0];
                }
            }

            public string LastName
            {
                get
                {
                    return Username.Split('.')[1];
                }
            }
        }
    }
}

 

  • 0
نشر

مرحباً بك @محمد علي23.

هذا مثال يقرأ البيانات من excel إلى متغير datatable من خلاله يمكنك حفظ البيانات إلى أي قاعدة بيانات , أرفقت لك البرنامج أيضاً.

تنبيه : قم بتغيير مسار الملف و ورقة excel .

using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Excel_to_Database
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }


        //excel دالة تقرأ البيانات من    
        private static DataTable makeDataTableFromSheetName(string filename, string sheetName)
        {

            //excel نص الإتصال الخاص ب 
            System.Data.OleDb.OleDbConnection myConnection = new System.Data.OleDb.OleDbConnection(
            "Provider=Microsoft.ACE.OLEDB.12.0; " +
            "data source='" + filename + "';" +
            "Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\" ");

            //جدول فارغ
            DataTable dtImport = new DataTable();

            // معين sheet   أمر يحلب كل البيانات من   
            System.Data.OleDb.OleDbDataAdapter myImportCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [" + sheetName + "$]", myConnection);

            //dtImport ملء بيانات إلى 
            myImportCommand.Fill(dtImport);

            // نتيجة الدالة
            return dtImport;
        }


        // حدث يعمل عند فتح البرنامج مباشرة
        private void Form1_Load(object sender, EventArgs e)
        {
            //makeDataTableFromSheetName متغير جدول إفتراضي يحتوي على ناتج من دالة 
            DataTable fromExcel = makeDataTableFromSheetName(@"C:\Users\azzam\Desktop\Sample.xlsx", "Sheet1");

            //datagridview تعين الجدول إلى 
            dataGridView1.DataSource = fromExcel;
        }
    }
}

شكراً لك.

Excel to Database.zip

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...