Wednesday, December 29, 2021

WinForm DataGridView RowIndex Data Entry & Export to Excel in Hindi

इस पोस्ट में मैंने दिखाया है कि कैसे डॉटनेट टेक्नोलॉजी के द्वारा एक डाटा एंट्री फॉर्म बनाया जा सकता है। इसके लिए विंडोज फॉर्म के भीतर तीन टेक्स्ट बॉक्स दिखाया गया है। जब इन टेक्सटबॉक्स में डाटा इंटर कर यूजर बटन क्लिक करता है तो वे डाटा एक रिकॉर्ड के रूप में DataGridView कंट्रोल में इंटर हो जाता है। इस तरह यूजर बार-बार रिकॉर्ड DataGridView के भीतर इंटर कर सकता है। जब सारे डाटा DataGridView के भीतर दर्ज हो जाते हैं तो बाद में इस डाटा को DataGridView से एक्सेल फाइल के भीतर ट्रांसफर किया जा सकता है। 

जब फॉर्म लोड होता है तब नियत रूप से तीन रिकार्ड्स अपने आप लोड होते हैं तदन्तर यूजर द्वारा डाटा इनपुट किया जाता है। 
यूजर द्वारा डाटा इनपुट कर Input Data बटन click लिया जाता है तब वह रिकॉर्ड DataGridView में स्टोर हो जाता  है। 
DataGridView के Columns को  Fill करने पर DataGridView के Columns बचे जगह को घेर लेते हैं 

पूरा प्रोग्राम दो हिस्सों में बांट दिया गया है। पहले हिस्से में डाटा एंट्री और डाटा को DataGridView में दर्ज कराने से संबंधित कोडिंग की गई है और दूसरे हिस्से में डाटा को DataGridView से एक्सेल फाइल में एक्सपोर्ट करने से सम्बंधित कोडिंग की गई है।

CODE:


using System;
using System.Windows.Forms;

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

        private void InputDataButton_Click(object sender, EventArgs e)
        {
            if (ValidateTextBoxes())
            {
                int rcount = DataGridView1.Rows.Count;
                DataGridViewRowCollection rows = DataGridView1.Rows;
                rows.Add();
                rows[rcount].Cells[0].Value = NameTextBox.Text;
                rows[rcount].Cells[1].Value = AgeTextBox.Text;
                rows[rcount].Cells[2].Value = DesignationTextBox.Text;
            }
        }

        private bool ValidateTextBoxes()
        {
            if (NameTextBox.Text.Trim() == string.Empty)
            {
                MessageBox.Show("Please enter name.", "Name", MessageBoxButtons.OK);
                NameTextBox.Focus();
                return false;
            }
            if (AgeTextBox.Text.Trim() == string.Empty)
            {
                MessageBox.Show("Please enter age.", "Age", MessageBoxButtons.OK);
                AgeTextBox.Focus();
                return false;
            }
            if (DesignationTextBox.Text.Trim() == string.Empty)
            {
                MessageBox.Show("Please enter name.", "Designation", MessageBoxButtons.OK);
                DesignationTextBox.Focus();
                return false;
            }
            return true;
        }

        private void DataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            MessageBox.Show("Selected Row Index: " + e.RowIndex, "CellClick");
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            DataGridViewRowCollection rows = DataGridView1.Rows;
            int rcount = 0;
            rows.Add();
            rows[rcount].Cells[0].Value = "Ajay";
            rows[rcount].Cells[1].Value = 27;
            rows[rcount].Cells[2].Value = "HR";
            rows.Add();
            rcount = 1;
            rows[rcount].Cells[0].Value = "Mira";
            rows[rcount].Cells[1].Value = 25;
            rows[rcount].Cells[2].Value = "SE";
            rows.Add();
            rcount = 2;
            rows[rcount].Cells[0].Value = "Hari";
            rows[rcount].Cells[1].Value = 29;
            rows[rcount].Cells[2].Value = "PM";
        }
    }
}

Export to Excel इस हिस्से में DataGridView के डाटा को एक्सपोर्ट करने के लिए Export Data बटन जोड़ दिया गया है, जैसा की नीचे के चित्र में दिखाया गया है 

Solution Explorer के भीतर Reference को राइट क्लिक कर Add Reference को क्लिक कर Reference Manager को ओपन किया जाता है और एक्सेल से communicate करने के लिए Microsoft.Office.Interop.Excel फ्रेमवर्क को जोड़ लिया जाता है 
Microsoft.Office 16.0 Object Library को भी जोड़ लिया है यद्यपि इस कोड में इसकी आवश्यकता नहीं पड़ी है 
CODE:


using System;
using System.IO;
using System.Windows.Forms;
using MyExcel = Microsoft.Office.Interop.Excel;

private void ExportButton_Click(object sender, EventArgs e)
        {
            MyExcel.Application xlApp = new MyExcel.Application();
            xlApp.EnableEvents = false;
            xlApp.Visible = false;
            object Missing = Type.Missing;
            MyExcel.Workbook wkbk = xlApp.Workbooks.Add(Missing);
            
            //wkbk.Name = "DataGridViewData";
            MyExcel.Worksheet sht = new MyExcel.Worksheet();
            sht = wkbk.Worksheets.Add(Missing);
            sht.Name = "Data";

            int rows, cols;
            rows = DataGridView1.Rows.Count;
            cols = DataGridView1.Columns.Count;
            for (int i = 0; i < rows; i++)
            {
                for (int j = 0; j < cols; j++)
                {
                    sht.Cells[i+1,j+1].value = DataGridView1.Rows[i].Cells[j].Value;
                }
            }
            string mydoc = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            string filepath = Path.Combine(mydoc, "DataGridViewData.xlsx");
            xlApp.DisplayAlerts = false;
            xlApp.ActiveWorkbook.SaveAs(filepath);
            xlApp.DisplayAlerts = true;
            xlApp.Visible = true;
            xlApp.ActiveWorkbook.Close();

            xlApp.Quit();
            //MessageBox.Show("Data Exported in Excel Workbook.", "Name", MessageBoxButtons.OK);
        }

No comments:

Post a Comment

Hot Topics