C# Excel工作表未在工作表1中保存数据

C# Excel工作表未在工作表1中保存数据,c#,winforms,excel-interop,C#,Winforms,Excel Interop,当我尝试从文本框向工作表1输入数据时,Excel文件包含两张工作表,第一张工作表名为“PM”,第二张工作表名为“km”,这已成功完成,但当我尝试在工作表2中输入数据时。。表1恢复到其原始状态(空)。。 我检查了我在第一个工作表“xlsht”中为两张工作表编写的代码,但两张工作表上的数据都没有更新,然后我用两张工作表编写了两个函数,但问题是相同的,知道为什么吗 我的代码: protected void PM_Sheet1() { try {

当我尝试从文本框向工作表1输入数据时,Excel文件包含两张工作表,第一张工作表名为“PM”,第二张工作表名为“km”,这已成功完成,但当我尝试在工作表2中输入数据时。。表1恢复到其原始状态(空)。。 我检查了我在第一个工作表“xlsht”中为两张工作表编写的代码,但两张工作表上的数据都没有更新,然后我用两张工作表编写了两个函数,但问题是相同的,知道为什么吗

我的代码:

protected void PM_Sheet1()
    {
        try
        {
            Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
            Worksheet xlsht = new Worksheet();
            string path = @"D:\test.xlsx";
            xlsht = xlApp.Application.Workbooks.Open(path).Worksheets["PM"];
            xlsht.Cells[11, 2] = UserNameTxt.Text + "@rasatop.com";
            xlsht.Cells[11, 4] = UserNameTxt.Text;
            xlsht.Cells[14, 2] = SerialTxt.Text;
            xlsht.Cells[16, 2] = WLANMacTxt.Text;
            xlsht.Cells[16, 3] = LANMacTxt.Text;
            xlsht.Cells[16, 4] = IPTxt.Text;
            xlsht.Cells[14, 5] = ComputerTxt.Text;
            xlsht.Cells[16, 5] = BarcodeTxt.Text;
            xlsht.Cells[18, 5] = CPUTxt.Text.Substring(0, 26);
            xlsht.Cells[18, 4] = VGATxt.Text;
            xlsht.Cells[18, 3] = RAMTxt.Text;
            xlsht.Cells[27, 4] = OSTxt.Text;
            xlsht.Cells[5, 4] = System.DateTime.Today;
            xlsht.Cells[26, 4] = System.DateTime.Today;
            xlsht.Cells[9, 5] = System.DirectoryServices.AccountManagement.UserPrincipal.Current.DisplayName;
            xlsht.SaveAs(@"D:\test1.xlsx");
        }
        catch (Exception)
        {
            MessageBox.Show(@"Make Sure test.xlsx file in D:\ Drive");
        }
    }
    protected void PM_Sheet2()
    {
        try
        {
            Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
            Worksheet xlsht = new Worksheet();
            string path = @"D:\test1.xlsx";
            xlsht = xlApp.Application.Workbooks.Open(path).Worksheets["km"];
            xlsht.Cells[4, 2] = System.DateTime.Today;
            xlsht.Cells[6, 2] = UserNameTxt.Text;
            xlsht.Cells[6, 4] = ComputerTxt.Text;
            xlsht.Cells[6, 5] = BarcodeTxt.Text;
            xlsht.SaveAs(@"D:\" + ComputerTxt.Text + ".xlsx");
            xlApp.Visible = true;
        }
        catch (Exception)
        {
            MessageBox.Show("Error Occured Cannot Save Sheet 2");
        }

    }
尽管如此,
Worksheet.SaveAs()
仍会导致错误,因此您必须使用
Workbook.SaveAs()

您还打开了两个不同的Excel实例,其中您只需要一个实例,而这两个实例显然都在运行

最后,您最好为所有操作打开一个Excel实例,从而在
表单
类级别(声明),
按钮1\u单击()
级别(
Excel
工作簿
初始化),助手方法(
工作表
初始化)

详情如下:

using System;
using System.Windows.Forms;
using Worksheet = Microsoft.Office.Interop.Excel.Worksheet;
using Workbook = Microsoft.Office.Interop.Excel.Workbook;
using MsExcelApp = Microsoft.Office.Interop.Excel.Application;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        MsExcelApp xlApp =;
        Workbook xlWb;
        Worksheet xlSht;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string path = @"D:\test.xlsx";
            xlApp = new MsExcelApp();


            try
            {
                xlWb = xlApp.Application.Workbooks.Open(path);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;
            }

            PM_Sheet1();
            PM_Sheet2();

            try
            {
                xlWb.SaveAs(@"D:\" + ComputerTxt.Text + ".xlsx");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

            xlApp.Quit();
        }




        protected void PM_Sheet1()
        {
            try
            {
                xlSht = xlWb.Worksheets["PM"];
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;
            }

            xlSht.Cells[11, 2] = UserNameTxt.Text + "@rasatop.com";
            xlSht.Cells[11, 4] = UserNameTxt.Text;
            xlSht.Cells[14, 2] = SerialTxt.Text;
            xlSht.Cells[16, 2] = WLANMacTxt.Text;
            xlSht.Cells[16, 3] = LANMacTxt.Text;
            xlSht.Cells[16, 4] = IPTxt.Text;
            xlSht.Cells[14, 5] = ComputerTxt.Text;
            xlSht.Cells[16, 5] = BarcodeTxt.Text;
            xlSht.Cells[18, 5] = CPUTxt.Text.Substring(0, 26);
            xlsht.Cells[18, 4] = VGATxt.Text;
            xlsht.Cells[18, 3] = RAMTxt.Text;
            xlsht.Cells[27, 4] = OSTxt.Text;
            xlSht.Cells[5, 4] = System.DateTime.Today;
            xlSht.Cells[26, 4] = System.DateTime.Today;
            xlSht.Cells[9, 5] = System.DirectoryServices.AccountManagement.UserPrincipal.Current.DisplayName;
        }

        protected void PM_Sheet2()
        {
           try
            {
                xlSht = xlWb.Worksheets["km"];
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;
            }

            xlSht.Cells[4, 2] = System.DateTime.Today;
            xlSht.Cells[6, 2] = UserNameTxt.Text;
            xlSht.Cells[6, 4] = ComputerTxt.Text;
            xlSht.Cells[6, 5] = BarcodeTxt.Text;
        }
    }


}

重新打开工作簿后是否尝试
Save()
保存它?找不到Save()方法,但我找到了saveAs()方法,我也这样做了,但没有执行project@GBursali我在上面的复选框中编辑代码,您使用的是
xlsht.SaveAs(@“D:\”+ComputerTxt.Text+“.xlsx”)
作为最后一次保存,您正在检查该文件,而不是
test1.xlsx
,对吗?
ComputerTxt.Text
的值是多少?谢谢,这非常有用,您纠正了我所做的许多错误!