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、実際に解放 (終了) する必要があります。workbookappNothing

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 に答える