小编use*_*455的帖子

为什么此代码导致Excel无法正常关闭?

为什么这行代码会导致Excel无法退出?

Excel.Range range = (Excel.Range)ws.Cells[1,1];
Run Code Online (Sandbox Code Playgroud)

如果是因为施法,那么这段代码不会导致同样的问题吗?

Excel.Worksheet ws = (Excel.Worksheet)wb.ActiveSheet;
Run Code Online (Sandbox Code Playgroud)

我试过了.但这很有效.Excel将关闭.

如果我使用此代码.Excel关闭.

Excel.Range range = ws.get_Range("A1","A1");
Run Code Online (Sandbox Code Playgroud)

那有什么区别?是的,我知道有一百万个"如何正确关闭Excel"线程.但由于这是一个问题,而不是一个答案,我决定问一个新问题,而不是问别人的问题.

这是我的代码.但当然还有其他代码.我只是在评论所有内容并慢慢地尝试哪些行导致Excel无法关闭.我意识到即使不使用垃圾收集器,Excel仍然会关闭.我不想用大锤关闭Excel.

谢谢.

Excel.Application objExcel = new Excel.Application();
Excel.Workbooks wbs = objExcel.Workbooks;
Excel.Workbook wb = wbs.Open(saveFileDialog1.FileName, Type.Missing,  Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
Excel.Worksheet ws = (Excel.Worksheet)wb.ActiveSheet;
//Excel.Range range = (Excel.Range)ws.Cells[1,1];
Excel.Range range = ws.get_Range("A1","A1");

FinalReleaseAnyComObject(range);
FinalReleaseAnyComObject(ws);
wb.Close(Type.Missing, Type.Missing, Type.Missing);
FinalReleaseAnyComObject(wb);
FinalReleaseAnyComObject(wbs);
objExcel.Quit();
FinalReleaseAnyComObject(objExcel);
Run Code Online (Sandbox Code Playgroud)

目前我已经尝试过objExcel,wbs,wb和ws.这4个对象不会导致问题.

private static void FinalReleaseAnyComObject(object o)
{
    Marshal.FinalReleaseComObject(o);
    o = null;
}
Run Code Online (Sandbox Code Playgroud)

我意识到你也不能重用变量.

Excel.Range range …
Run Code Online (Sandbox Code Playgroud)

c# excel

7
推荐指数
1
解决办法
2950
查看次数

如何让用户调整控件的大小

简单的问题,但我不知道谷歌的关键词是什么.

假设我们要调整Windows上任务栏的高度.当您将鼠标光标放在其边缘时,光标将变为向上和向下箭头,这意味着任务栏可以调整大小.

如何让光标在C#中出现?

它有控制权吗?或者我是否必须检查鼠标是否在控件的边缘,如果它是更改光标.点击大小根据差异调整大小?

c#

3
推荐指数
1
解决办法
2221
查看次数

标签 统计

c# ×2

excel ×1