C# 使用Interop C保存Excel电子表格#
此程序按预期运行和退出。它会将单元格B3中的正确值打印到控制台。关闭时,它会询问我是否要替换现有文件。我点击是。当我在Excel中打开电子表格时,该值仍然在单元格B3中,尽管单元格为.ClearContents()C# 使用Interop C保存Excel电子表格#,c#,excel,interop,C#,Excel,Interop,此程序按预期运行和退出。它会将单元格B3中的正确值打印到控制台。关闭时,它会询问我是否要替换现有文件。我点击是。当我在Excel中打开电子表格时,该值仍然在单元格B3中,尽管单元格为.ClearContents() 有什么想法吗?您对单元格的调用。ClearContents()将从单元格中清除公式和值常量。这绝对是可行的。您可以在调用cell.ClearContents()后通过测试cell.Value2==null来确认这一点,该值应为true 我相信代码的问题在于调用book.Close(t
有什么想法吗?您对
单元格的调用。ClearContents()
将从单元格中清除公式和值常量。这绝对是可行的。您可以在调用cell.ClearContents()
后通过测试cell.Value2==null
来确认这一点,该值应为true
我相信代码的问题在于调用book.Close(true,“HWYFAB.xlsx”,false)
。问题是您正在显式地传递工作簿的名称,但您正在离开路径。(请注意,当您打开工作簿时,您将包含完整路径,包括“C:\”目录。)保存时,如果不保留工作簿的完整路径,则您将保存到当前目录,该目录可以是“我的文档”或其他任何目录
如果希望将工作簿保存在其原始位置,则应为文件名
参数传入Type.Missing
。例如:
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();
}
这个想法还没有经过测试,但我相当有信心,这对你来说应该是可行的。试试看
--迈克这就成功了。这太奇怪了,我在电脑上搜索了所有的HWYFAB.xlsx副本,只有一个在C:\。谢谢,很奇怪。。。我想,你可能必须尝试搜索非索引位置?很高兴你已经克服了你的问题!
book.Close(true, Type.Missing, false);