2013-07-10 135 views
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文件

另外,当我尝试通过目标文件夹正常打开Excel文件时,它或者说该文件被管理员阻止进行编辑或者说该文件是只读的。因此,在文件打开后无法编辑任何内容,因为只有在任何一种情况下才会以只读模式打开。

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

回答

0

你需要退出(关闭)Excel,然后设置worksheetworkbookapp变量,当你完成Nothing,所以他们实际上是释放(关闭)。

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

worksheet = Nothing 
workbook = Nothing 
app = Nothing 
+0

嗨最好是安全的!感谢你的及时回复。 它输入“Nothing”时会报错。另外,如果我将“Nothing”替换为“null”,它仍然不能解决问题。 请帮忙! –

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; 

我大概去了矫枉过正,但比抱歉