【发布时间】:2018-05-16 22:15:00
【问题描述】:
我正在用 C# 编写此特定代码以写入 excel 文件。
public partial class WriteExcelForm : Form
{
public WriteExcelForm()
{
InitializeComponent();
}
private void writeExcelButton_Click(object sender, EventArgs e)
{
Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
if (xlApp == null)
{
MessageBox.Show("Excel is not installed!!!");
return;
}
Excel.Workbooks xlWorkBooks = xlApp.Workbooks;
Excel.Workbook xlWorkBook = xlWorkBooks.Add(Type.Missing);
Excel.Worksheet xlWorkSheet = xlWorkBook.ActiveSheet;
xlWorkSheet.Name = "sample";
Excel.Range range1 = (Excel.Range)xlWorkSheet.Cells[1, 1];
range1.Value = "dhiraj";
Excel.Range range2 = xlWorkSheet.Range["A2"];
range2.Value = "dhiraj";
xlWorkBook.SaveAs("C:\\output.xlsx");
//Properly closing the excel app
GC.Collect();
GC.WaitForPendingFinalizers();
xlWorkBook.Close(false, Type.Missing, Type.Missing);
xlApp.Quit();
Marshal.FinalReleaseComObject(range1);
Marshal.FinalReleaseComObject(range2);
Marshal.FinalReleaseComObject(xlWorkSheet);
Marshal.FinalReleaseComObject(xlWorkBook);
Marshal.FinalReleaseComObject(xlWorkBooks);
Marshal.FinalReleaseComObject(xlApp);
}
}
如果我运行此代码,excel.exe 不会退出,而是继续在后台运行。
但是,如果我注释掉这一行
Excel.Range range1 = (Excel.Range)xlWorkSheet.Cells[1, 1];
range1.Value = "dhiraj";
excel.exe 优雅地退出。
我在这里错过了什么?
编辑: 我已经解决了我的问题。发布我的发现作为答案。
P.S:不知道为什么我被否决了,我在发布这个问题之前做了很多研究。
【问题讨论】:
-
@YowE3K:你的意思是没有显式类型转换?我确实尝试过,但我最终得到了相同的结果。
-
检查此链接:siddharthrout.com/2012/08/06/… - 并消除双点。还建议您避免使用括号符号进行类型转换。
-
看看这个:stackoverflow.com/questions/29067714/… - 一个反点。
-
@RobinMackenzie:我已经浏览了这些链接,希望您在我在这里分享的代码中看不到任何“双点”。
-
每个
[]都是一个隐藏期。 ausdotnet.wordpress.com/2008/06/04/…