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中。
有什么想法吗?
答案 0 :(得分:5)
您对cell.ClearContents()
的调用将清除单元格中的公式和值常量。这应该绝对有效。您可以在致电cell.ClearContents()
之后通过测试cell.Value2 == null
来确认这一点,true
应为book.Close(true, "HWYFAB.xlsx", false)
。
我认为代码的问题在于对Type.Missing
的调用。问题是你明确地传递了工作簿的名称,但是你离开了这条路。 (请注意,当您打开工作簿时,您将包括完整路径,包括“C:\”目录。)通过在保存时离开工作簿的完整路径,您将保存到当前目录,这可能是“我的文件“或其他任何地方。
如果您希望将工作簿保存在其原始位置,那么您应该将Filename
传递给book.Close(true, Type.Missing, false);
参数。例如:
{{1}}
这个想法未经测试,但我相信这对你有用。试一试......
- 迈克