簡體   English   中英

使用Interop C#保存Excel電子表格

[英]Saving Excel Spreadsheet using Interop C#

static void Main()
{
  Application excelapp = new Application();
  Workbook book = excelapp.Workbooks.Open(@"C:\HWYFAB.xlsx",
    0, false, 5, "", "", false, XlPlatform.xlWindows , "",
    true, false, 0, true, false, false);

  Worksheet sheet = (Worksheet)book.Sheets[1];

  Range cell = (Range)sheet.Cells[3, 2];
  Console.WriteLine(cell.Text);
  cell.ClearContents();
  book.Close(true, "HWYFAB.xlsx", false);
  excelapp.Quit();
}

該程序按預期運行和退出。 它會將單元格B3中的正確值打印到控制台。 關閉它時詢問我是否要替換現有文件。 我點擊是。 當我在Excel中打開電子表格時,盡管有cell.ClearContents(),但該值仍然在單元格B3中。

有什么想法嗎?

您對cell.ClearContents()調用將清除單元格中的公式和值常量。 這應該絕對有效。 你可以在調用cell.Value2 == null cell.ClearContents()通過測試cell.Value2 == null來確認這一點,這應該是true

我相信你的代碼的問題是在book.Close(true, "HWYFAB.xlsx", false)的調用中。 問題是你明確地傳遞了工作簿的名稱,但是你離開了這條路。 (請注意,當您打開工作簿時,您將包括完整路徑,包括“C:\\”目錄。)通過在保存時離開工作簿的完整路徑,您將保存到當前目錄,這可能是“我的文件“或其他任何地方。

如果要在原始位置保存工作簿,則應將Type.Missing傳遞給Filename參數。 例如:

book.Close(true, Type.Missing, false);

這個想法沒有經過考驗,但我相信這對你有用。 試試看...

- 邁克

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM