在excel文档的特定工作表中创建新行VS C#

在excel文档的特定工作表中创建新行VS C#,c#,excel,visual-studio,C#,Excel,Visual Studio,我知道这个问题可能会在另一个被问到的问题中得到解决,这并不是因为我花了2天时间尝试了所有这些问题。 让我们开始主题: -我有一个用Visual Studio Express 2017制作的桌面应用程序,使用C#代码。 -我将3个变量存储在一个包含多张工作表的excel文档中:加班小时数、加班天数、备注。 每一张纸都属于一个基于pc用户名的个人 string datforOV = monthCalendar1.SelectionRange.Start.ToShortDateString();

我知道这个问题可能会在另一个被问到的问题中得到解决,这并不是因为我花了2天时间尝试了所有这些问题。 让我们开始主题: -我有一个用Visual Studio Express 2017制作的桌面应用程序,使用C#代码。 -我将3个变量存储在一个包含多张工作表的excel文档中:加班小时数、加班天数、备注。 每一张纸都属于一个基于pc用户名的个人

string datforOV = monthCalendar1.SelectionRange.Start.ToShortDateString();                              //data string
            double hours = decimal.ToDouble(numericUpDown1.Value) + decimal.ToDouble(numericUpDown2.Value) * 0.1;   //number of hours
            string box = richTextBox1.Text;                                                                         //content of text box

            Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
            Microsoft.Office.Interop.Excel.Worksheet xlsht = new Microsoft.Office.Interop.Excel.Worksheet();           
            string path = @"Z\OLP.xlsx";
            xlsht = xlApp.Application.Workbooks.Open(path).Worksheets[Environment.UserName];
我需要添加一个新行,在以用户名命名的工作表中,第一列填写小时数,第二列填写日期,下一列填写注释。
请帮助我,因为我开始失去理智。提前感谢。

您可以尝试使用以下代码向命名的工作表excel中添加新行

using Excel = Microsoft.Office.Interop.Excel;

       private void button1_Click(object sender, EventArgs e)
    {
        string datforOV = monthCalendar1.SelectionRange.Start.ToShortDateString();                              //data string
        double hours = decimal.ToDouble(numericUpDown1.Value) + decimal.ToDouble(numericUpDown2.Value) * 0.1;   //number of hours
        string box = richTextBox1.Text;                                                                         //content of text box

        Excel.Application xlApp = new Excel.Application();
        string path = @"E:\1.xlsx";
        Excel.Workbook workbook = xlApp.Application.Workbooks.Open(path);
        Excel.Worksheet xlsht =workbook.Worksheets[Environment.UserName];
        Excel.Range range = xlsht.UsedRange;
        int rowcount = range.Rows.Count;
        Excel.Range next= (Excel.Range)xlsht.Rows[rowcount+1];
        next.Insert();                                     //Another method to add new row
        xlsht.Cells[rowcount + 1, 1] = datforOV;
        xlsht.Cells[rowcount + 1, 2] = hours;
        xlsht.Cells[rowcount + 1, 3] = box;
        workbook.Save();
        workbook.Close();
        xlApp.Quit();
        MessageBox.Show("sucess");


    }
结果:


此代码包含在“发送”按钮的功能中。非常感谢!让我摆脱困境。唯一的一件事。。仅当工作表为空时才工作,因此,如果我再次按下按钮添加新数据,将出现异常错误:“System.Runtime.InteropServices.ComeException:'Microsoft Excel无法插入新单元格,因为它会将非空单元格从工作表的末尾推出。这些单元格可能显示为空,但具有空值、某些格式或公式。请删除足够的行或列,以便为要插入的内容腾出空间,然后重试。”“@Akatori,根据我的测试,我重现了你的问题。因此,我修改了我的代码。现在我将其更改为另一种添加新行的方式。现在。你可以看看它是否对你有用。伙计,你真是一个幸运儿!它就像一个符咒。@Akatori,我很高兴听到你的问题已经解决了,你可以点击'✔' 将回答标记为回答。它也会帮助其他人解决类似的问题。你可以问一个新问题。