作者firingmoon (小天)
看板C_Sharp
标题[问题] 产生EXCEL後,工作管理员却还有程序
时间Wed Oct 17 16:47:18 2012
GOOGLE上有很多解决方法,不过目前只有一个方法OK,但是还是有问题
我主要是想把database的档案捞出来,存到EXCEL
code大概是
Excel.Application xApp = new Excel.ApplicationClass();
Excel.Workbook xBook = xApp.Workbooks.Open(ReportPath[0],
Missing.Value, Missing.Value, Missing.Value,Missing.Value, Missing.Value, Missi
ng.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,Missing.Va
lue, Missing.Value, Missing.Value, Missing.Value);
Excel.Worksheet xSheet01 = (Excel.Worksheet)xBook.Sheets["A1"];
Excel.Worksheet xSheet02 = (Excel.Worksheet)xBook.Sheets["A2"];
Excel.Worksheet xSheet03 = (Excel.Worksheet)xBook.Sheets["A3"];
xSheet01.get_Range("A7", "A111").ToString()).Value2 = data;
//关闭EXCEL
xBook.Close(false, Missing.Value, Missing.Value);
xApp.Workbooks.Close();
xApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(xApp);
System.Runtime.InteropServices.Marshal.ReleaseComObject(xBook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(xSheet01);
System.Runtime.InteropServices.Marshal.ReleaseComObject(xSheet02);
System.Runtime.InteropServices.Marshal.ReleaseComObject(xSheet03);
xApp = null;
xBook = null;
xSheet01 = null;
xSheet02 = null;
xSheet03 = null;
GC.Collect();
GC.WaitForPendingFinalizers();
基本上大家都用这种方法,但是我还是关不掉Orz
後来找到一个残暴的方法
foreach (System.Diagnostics.Process proc in
System.Diagnostics.Process.GetProcesses())
{
if (proc.ProcessName == "EXCEL")
{
proc.Kill();
}
}
但是这种方法会让产生出来的EXCEL档案开启时,出现
其档案格式与副档名所指定的格式不同,开启档案前,请确认档案未损毁,且来自信任的
来源」的错误,所以没办法用这种方法去关闭EXCEL
想请教各位是我第一段关闭的code有甚麽问题,还是有其他方法能够解决,谢谢。
--
这里不是让你被治癒的
只是让你病更重的..
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 1.170.127.19
※ 编辑: firingmoon 来自: 1.170.127.19 (10/17 16:47)
2F:→ firingmoon:感谢 不过暂时还没考虑上面这种方式 10/17 17:19
3F:→ Abbee:改用html格式产出excel档吧~ 10/17 22:25
4F:推 Elearnet:原本一开始我也坚持用呼叫的 到最後还是改用了NPOI... 10/18 00:28
5F:→ bbcust:其实用office的元件的缺点是office版本更新就可能不适用 10/18 12:40
6F:→ bbcust:另外除了NPOI以外 还有更好的选择EPPlus 10/18 12:41
7F:→ bbcust:只是限制要office 2007+ 2003以下的就不能用了 10/18 12:41
8F:推 gundan:新的格式可以用 openxml 10/23 16:50
9F:→ firingmoon:最後我还是舍弃了...改用NPOI 原本的方式太难处理 10/30 12:02