मुझे अपने डेटा ग्रिड में एक्सेल डेटा पेस्ट करने की आवश्यकता है जिसके लिए मुझे नीचे दिया गया कोड मिला है, हालांकि मेरे डेटा ग्रिड व्यू के हेडर को चिपकाए गए डेटा की पहली पंक्ति (नीचे स्क्रीनशॉट के अनुसार) के साथ पॉप्युलेट किया जा रहा है। मैंने यहां इसी तरह की समस्याओं की खोज की लेकिन उनमें से कोई भी इसे हल नहीं कर रहा है। कृपया इसे हल करने में मेरी सहायता करें। कॉपी किए गए डेटा को कॉलम हेडर के लिए पेस्ट नहीं किया जाना चाहिए, पेस्ट रेंज केवल दो कॉलम तक ही सीमित होनी चाहिए।

Original form

After Pasting

कोड:

private void Btnlotpaste_Click(object sender, EventArgs e)
    {
        DataObject o = (DataObject)Clipboard.GetDataObject();
        if (o.GetDataPresent(DataFormats.Text))
        {
            if (dataGridView2.RowCount > 0)
                dataGridView2.Rows.Clear();

            if (dataGridView2.ColumnCount > 0)
                dataGridView2.Columns.Clear();

            bool columnsAdded = false;
            string[] pastedRows = Regex.Split(o.GetData(DataFormats.Text).ToString().TrimEnd("\r\n".ToCharArray()), "\r\n");
            int j = 0;
            foreach (string pastedRow in pastedRows)
            {
                string[] pastedRowCells = pastedRow.Split(new char[] { '\t' });

                if (!columnsAdded)
                {
                    for (int i = 0; i < pastedRowCells.Length; i++)
                        dataGridView2.Columns.Add("col" + i, pastedRowCells[i]);

                    columnsAdded = true;
                    j++;
                    continue;
                }

                dataGridView2.Rows.Add();
                int myRowIndex = dataGridView2.Rows.Count - 1;

                using (DataGridViewRow myDataGridViewRow = dataGridView2.Rows[j])
                {
                    for (int i = 0; i < pastedRowCells.Length; i++)
                        myDataGridViewRow.Cells[i].Value = pastedRowCells[i];
                }
                j++;
            }
        }
    }

dataGridView2.Rows.Clear(); को हटाने के बाद after

0
RaviKumar 16 पद 2020, 07:56
dataGridView2.Rows.Clear(); को हटा दें? हो सकता है कि आप शीर्षक साफ़ कर दें, या आप अपना डेटा पेस्ट करने से पहले एक पंक्ति जोड़ने का प्रयास कर सकते हैं।
 – 
高鵬翔
16 पद 2020, 08:22
नमस्ते @ आपकी प्रतिक्रिया के लिए धन्यवाद ..अब पहली पंक्ति के लिए दो कॉलम अतिरिक्त जोड़े गए। (प्रश्न में चित्र जोड़ा गया)
 – 
RaviKumar
16 पद 2020, 08:36
क्या dataGridView2.Columns.Add("col" + i, pastedRowCells[i]); डेटा या शीर्षक है?
 – 
高鵬翔
16 पद 2020, 08:41
1
dataGridView2.Columns.Clear(); को भी हटा दें।
 – 
高鵬翔
16 पद 2020, 10:03
1
धन्यवाद अब यह काम कर रहा है
 – 
RaviKumar
16 पद 2020, 11:59

1 उत्तर

सबसे बढ़िया उत्तर

तो यह इस प्रकार हो सकता है:


private void Btnlotpaste_Click(object sender, EventArgs e)
{
    DataObject o = (DataObject)Clipboard.GetDataObject();
    if (o.GetDataPresent(DataFormats.Text))
    {
        
        bool columnsAdded = false;
        string[] pastedRows = Regex.Split(o.GetData(DataFormats.Text).ToString().TrimEnd("\r\n".ToCharArray()), "\r\n");
        int j = 0;
        foreach (string pastedRow in pastedRows)
        {
            string[] pastedRowCells = pastedRow.Split(new char[] { '\t' });

          
            dataGridView2.Rows.Add();
            int myRowIndex = dataGridView2.Rows.Count - 1;

            using (DataGridViewRow myDataGridViewRow = dataGridView2.Rows[j])
            {
                for (int i = 0; i < pastedRowCells.Length; i++)
                    myDataGridViewRow.Cells[i].Value = pastedRowCells[i];
            }
            j++;
        }
    }
}

1
高鵬翔 16 पद 2020, 12:01