|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
有理由相信是能提供更出色的性能。很多平台无法支持复杂的编译器,因此需要二次编译来减少本地编译器的复杂度。当然可能做不到java编译器那么简易。excel|办理 这段工夫在VS2003的WebForm体例下对Excel举行操纵,碰到一个最为头疼的成绩就是对Excel操纵终了后Excel不克不及够一般封闭,体系加入后,Excel老是驻留在内存中。可是这段代码放到WinForm的程序中又没有成绩。在网长进行了查找也没有找到无效可行的举措。经由有数次的实验,终究办理以下:
本来誊写以下:
<P> privateExcel.Applicationm_app;
privateExcel.Workbookm_workbook;
this.m_app=newExcel.ApplicationClass();
this.m_app.DisplayAlerts=false;
this.m_workbook=this.m_app.Workbooks.Open(sFilePath,Missing.Value,
Missing.Value,Missing.Value,Missing.Value,
Missing.Value,Missing.Value,Missing.Value,
Missing.Value,Missing.Value,Missing.Value,
Missing.Value,Missing.Value,Missing.Value,
Missing.Value);
修正后以下:
<P> privateExcel.Applicationm_app;
privateExcel.Workbooksm_workbooks;
privateExcel.Workbookm_workbook;
this.m_app=newExcel.ApplicationClass();
this.m_app.DisplayAlerts=false;
m_workbooks=this.m_app.Workbooks;
this.m_workbook=this.m_workbooks.Open(sFilePath,Missing.Value,
Missing.Value,Missing.Value,Missing.Value,
Missing.Value,Missing.Value,Missing.Value,
Missing.Value,Missing.Value,Missing.Value,
Missing.Value,Missing.Value,Missing.Value,
Missing.Value);
一样对Sheet的操纵以下
修正前以下:
<P> Excel._Worksheetworksheet1=null;
worksheet1=(Excel._Worksheet)this.m_workbook.Worksheets.get_Item(sSheetName);
修正后以下:
Excel.Sheetssheets=null;
Excel._Worksheetworksheet1=null;
sheets=this.m_workbook.Worksheets;
worksheet1=(Excel._Worksheet)sheets.get_Item(sSheetName);
发明区分了么?本来Workbooks,Worksheets这两个类没有被实例化就间接利用了,形成该类不克不及够被接纳。终极形成Excel在内存的驻留。
<P> 终极以以下体例开释。 privatevoidReleaseAllRef(Objectobj)
{
try
{
if(obj!=null)
{
while(Marshal.ReleaseComObject(obj)>1);
}
}
finally
{
obj=null;
}
}
privatevoidRelease()
{
if(m_app!=null)
{
m_app.Quit();
}
ReleaseAllRef(m_workbook);
m_workbook=null;
ReleaseAllRef(m_workbooks);
m_workbooks=null;
ReleaseAllRef(m_app);
m_app=null;
System.GC.Collect();
}语言是不是不是最重要的? |
|