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();
}
Run Code Online (Sandbox Code Playgroud)
该程序按预期运行和退出.它会将单元格B3中的正确值打印到控制台.关闭它时询问我是否要替换现有文件.我点击是.当我在Excel中打开电子表格时,尽管有cell.ClearContents(),但该值仍然在单元格B3中.
有什么想法吗?
您的调用cell.ClearContents()将清除单元格中的公式和值常量.这应该绝对有效.您可以在cell.ClearContents()通过测试后确认是否cell.Value2 == null应该确认这一点true.
我相信你的代码的问题在于调用book.Close(true, "HWYFAB.xlsx", false).问题是你明确地传递了工作簿的名称,但是你离开了这条路.(请注意,当您打开工作簿时,您将包括完整路径,包括"C:\"目录.)通过在保存时离开工作簿的完整路径,您将保存到当前目录,这可能是"我的文件"或其他任何地方.
如果您想保存就地工作簿,在其原来的位置,那么你应该在传递Type.Missing的Filename参数.例如:
book.Close(true, Type.Missing, false);
Run Code Online (Sandbox Code Playgroud)
这个想法未经测试,但我相信这对你有用.试试看...
- 迈克