繁体   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