Inserting multiple textbox data into an Excel file

后端 未结 2 961
情话喂你
情话喂你 2020-12-07 03:15

I want to write a program that saves the text in textbox to an Excel file using a loop because I want to insert multiple text into Excel. I found codes but it only overwrite

相关标签:
2条回答
  • 2020-12-07 03:35

    Your main concern is to find the last used row in your excel.

    For that you can use

     Excel.Range usedRange = xlWorkSheet .UsedRange;
     Excel.Range _lastCell= usedRange.SpecialCells(Excel.XlCellType.xlCellTypeLastCell,  
     Type.Missing);
    
      int _lastRow= lastCell.Row; // Gives you the last used row in your Excel sheet
      int _lastCol = lastCell.Column; // Give you the last used column
    
    
    
     _lastRow++; // To get the next row 
    
        for (int i=_lastRow; i<=_lastrow+6; i++) // Set your i value to _lastRow
        {
            xlWorkSheet.Cells[i, 1] = textBox1.Text;
            xlWorkSheet.Cells[i, 2] = textBox2.Text;
            xlWorkSheet.Cells[i, 3] = textBox3.Text;
            xlWorkSheet.Cells[i, 4] = textBox4.Text;
        }
    
    0 讨论(0)
  • 2020-12-07 03:56

    Like I mentioned that you don't need to use a loop. See this example

    Let's say your form looks like this.

    enter image description here

    Code: (TRIED AND TESTED)

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using Excel = Microsoft.Office.Interop.Excel;
    
    Namespace WindowsFormsApplication2
    {
        public partial class Form1 : Form
        {
            Microsoft.Office.Interop.Excel.Application xlexcel;
            Microsoft.Office.Interop.Excel.Workbook xlWorkBook;
            Microsoft.Office.Interop.Excel.Worksheet xlWorkSheet;
            object misValue = System.Reflection.Missing.Value;
    
            Public Form1()
            {
                InitializeComponent();
            }
    
            //~~> Open File
            private void button1_Click(object sender, EventArgs e)
            {
                xlexcel = new Excel.Application();
    
                xlexcel.Visible = true;
    
                // Open a File
                xlWorkBook = xlexcel.Workbooks.Open("C:\\MyFile.xlsx", 0, true, 5, "", "", true,
                Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
    
                xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
    
                xlWorkSheet.Cells[1, 1] = "FirstName";
                xlWorkSheet.Cells[1, 2] = "LastName";
                xlWorkSheet.Cells[1, 3] = "JobTitle";
                xlWorkSheet.Cells[1, 4] = "Address";
            }
    
            //~~> Add Data
            private void button2_Click(object sender, EventArgs e)
            {
                int _lastRow = xlWorkSheet.Range["A" + xlWorkSheet.Rows.Count].End[Excel.XlDirection.xlUp].Row + 1 ;
    
                xlWorkSheet.Cells[_lastRow, 1] = textBox1.Text;
                xlWorkSheet.Cells[_lastRow, 2] = textBox2.Text;
                xlWorkSheet.Cells[_lastRow, 3] = textBox3.Text;
                xlWorkSheet.Cells[_lastRow, 4] = textBox4.Text;
            }
    
            //~~> Once done close and quit Excel
            private void button3_Click(object sender, EventArgs e)
            {
                xlWorkBook.Close(true, misValue, misValue);
                xlexcel.Quit();
    
                releaseObject(xlWorkSheet);
                releaseObject(xlWorkBook);
                releaseObject(xlexcel);
            }
    
            private void releaseObject(object obj)
            {
                try
                {
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
                    obj = null;
                }
                catch (Exception ex)
                {
                    obj = null;
                    MessageBox.Show("Unable to release the Object " + ex.ToString());
                }
                finally
                {
                    GC.Collect();
                }
            }
        }
    }
    

    FOLLOWUP FROM COMMENTS

    Range object is a part of worksheet object. So you shouldn't be getting any errors there. And Like I mentioned above, the code is tried and tested.

    enter image description here

    MORE FOLLOWUP (From Comments)

    The above code was tested on VS 2010 Ultimate. If you have VS 2008 then replace the line

    int _lastRow = xlWorkSheet.Cells[xlWorkSheet.Rows.Count,
                   1].End[Excel.XlDirection.xlUp].Row + 1;
    

    with

    int _lastRow = xlWorkSheet.Cells.Find(
                                          "*",
                                          xlWorkSheet.Cells[1,1],
                                          Excel.XlFindLookIn.xlFormulas,
                                          Excel.XlLookAt.xlPart,
                                          Excel.XlSearchOrder.xlByRows,
                                          Excel.XlSearchDirection.xlPrevious,
                                          misValue,
                                          misValue,
                                          misValue
                                          ).Row + 1 ;
    
    0 讨论(0)
提交回复
热议问题