0
private void button1_Click(object sender, EventArgs e)
  {
    Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
    Excel.Workbook workbook = app.Workbooks.Open(@"C:\\Users\\Admin\\Desktop\\Dropbox\\Vandit's Folder\\Internship\\Copy of test.xls");
    Excel.Worksheet worksheet = workbook.ActiveSheet;

    rcount = worksheet.UsedRange.Rows.Count;
    MessageBox.Show(rcount.ToString());
    rcount++;

    if (textBox1.Text == "" && textBox2.Text == "")
    {
        MessageBox.Show("Both text boxes cannot be empty");
    }

    else if (textBox1.Text == "" && textBox2.Text != "")
    {
        worksheet.Cells[rcount, 1] = "";
        worksheet.Cells[rcount, 2] = textBox2.Text;
    }

    else if (textBox1.Text != "" && textBox2.Text == "")
    {
        worksheet.Cells[rcount, 1] = textBox1.Text;
        worksheet.Cells[rcount, 2] = "";
    }

    else
    {
        worksheet.Cells[rcount, 1] = textBox1.Text;
        worksheet.Cells[rcount, 2] = textBox2.Text;
    }

    workbook.Save();
    app.ActiveWorkbook.Close();

    textBox1.Text = "";
    textBox2.Text = "";
}

这是我正在使用的代码。当我运行此代码时,有时它可以完美运行并在 Excel 中正常更新。有时它会给我一个错误,说“文件已经存在。你想替换它吗?”。

此外,当我尝试通过目标文件夹正常打开 Excel 文件时,它要么说该文件被管理员阻止编辑,要么说该文件是只读的。因此,在文件像这样打开后,我无法编辑任何内容,因为在任何一种情况下,它都只能以只读模式打开。

此外,我之后无法删除该文件。

4

2 回答 2

0

您需要退出(关闭)Excel,然后将worksheet,workbookapp变量设置为Nothing完成时,以便它们实际上被释放(关闭)。

workbook.Save()
app.ActiveWorkBook.Close()
app.Quit()

worksheet = Nothing
workbook = Nothing
app = Nothing
于 2013-07-10T17:27:41.127 回答
0

试试这个:

xlWorkbook.Save();
xlApp.DisplayAlerts = false;
xlApp.Visible = false;
xlWorkbook.Close(Microsoft.Office.Interop.Excel.XlSaveAction.xlSaveChanges, System.Reflection.Missing.V`enter code here`alue, System.Reflection.Missing.Value);
xlWorkbook = null;
xlWorksheet = null;
xlApp.Quit();
xlApp = null;

我可能是为了矫枉过正,但最好是安全而不是抱歉

于 2013-08-26T14:17:50.443 回答