用com输出完用saveas时进程会关闭
用ThisWorkBook.Saved = TrueApp.Workbooks.Close()
App.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(App)
ThisSheet = Nothing
ThisWorkBook = Nothing
App = Nothing
进程还是关不了
用ThisWorkBook.Saved = TrueApp.Workbooks.Close()
App.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(App)
ThisSheet = Nothing
ThisWorkBook = Nothing
App = Nothing
进程还是关不了
{
int ProceedingCount = 0;
System.Diagnostics.Process[] ExcelProcesses;
ExcelProcesses = System.Diagnostics.Process.GetProcessesByName("EXCEL"); foreach(System.Diagnostics.Process IsProcedding in ExcelProcesses)
{
if(IsProcedding.ProcessName=="EXCEL")
{
ProceedingCount += 1;
}
}
if(ProceedingCount > 0)
{
DialogResult result;
result=MessageBox.Show("发现系统中有Excel进程,要关闭所有Excel进程吗?","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Information);
if(result==DialogResult.Yes)
{
foreach(System.Diagnostics.Process myProcess in ExcelProcesses)
{
myProcess.Kill(); }
}
}
只能一起关吗
文章来源:夜隼之家 加入时间:2005-3-14 14:59:51 阅读次数: 后退一步 双击滚动
页面功能:【字体:大 中 小】背景颜色: 【打印】【关闭】
using System;
using System.Reflection;namespace CExcel1
{ class Class1
{ [STAThread]
static void Main(string[] args)
{//创建Application对象
Excel.Application xApp=new Excel.ApplicationClass(); xApp.Visible=true;
//得到WorkBook对象, 可以用两种方式之一: 下面的是打开已有的文件
Excel.Workbook xBook=xApp.Workbooks._Open(@"D:\Sample.xls",
Missing.Value,Missing.Value,Missing.Value,Missing.Value
,Missing.Value,Missing.Value,Missing.Value,Missing.Value
,Missing.Value,Missing.Value,Missing.Value,Missing.Value);
//xBook=xApp.Workbooks.Add(Missing.Value);//新建文件的代码
//指定要操作的Sheet,两种方式:Excel.Worksheet xSheet=(Excel.Worksheet)xBook.Sheets[1];
//Excel.Worksheet xSheet=(Excel.Worksheet)xApp.ActiveSheet;
//读取数据,通过Range对象
Excel.Range rng1=xSheet.get_Range("A1",Type.Missing);
Console.WriteLine(rng1.Value2);
//读取,通过Range对象,但使用不同的接口得到Range
Excel.Range rng2=(Excel.Range)xSheet.Cells[3,1];
Console.WriteLine(rng2.Value2);
//写入数据 Excel.Range rng3=xSheet.get_Range("C6",Missing.Value);
rng3.Value2="Hello";
rng3.Interior.ColorIndex=6; //设置Range的背景色//保存方式一:保存WorkBook
//xBook.SaveAs(@"D:\CData.xls",Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value
// ,Excel.XlSaveAsAccessMode.xlNoChange,Missing.Value,Missing.Value,Missing.Value//,Missing.Value,Missing.Value);//保存方式二:保存WorkSheet
//xSheet.SaveAs(@"D:\CData2.xls",Missing.Value,Missing.Value,Missing.Value,Missing.Value//,Missing.Value,Missing.Value,Missing.Value,Missing.Value,Missing.Value);//保存方式三
xBook.Save(); xSheet=null;
xBook=null;
xApp.Quit(); //这一句是非常重要的,否则Excel对象不能从内存中退出
xApp=null;
} }
}
不要保存时excel进程就退不出啊
object oMissing=System.Reflection.Missing.Value;
excel.Application.Workbooks.Open(Path,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing); Excel.Workbook myBook=excel.Workbooks[1];
Excel.Worksheet mySheet=(Excel.Worksheet)myBook.Worksheets[1];
string ss=mySheet.Name;
Console.WriteLine(ss);
excel.Application.Workbooks.Close();
return ss;
还是关不了的
App.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(App)
ThisSheet = Nothing
ThisWorkBook = Nothing
App = Nothing
这个也试过没用啊
App.Application.Workbooks.Close()
App.Quit()
Dim generation As Int32 = System.GC.GetGeneration(App)
App = Nothing
System.GC.Collect(generation)
GC.Collect()我这System.GC.GetGeneration(App) = 0 有点怪
winform还是不行啊
假设代码放在一个叫func1的函数里
那么在
func1();
后面加GC.collect();
最好写个析构函数。
还有,继承System.IDispose接口?
已解决,谢了