高分求救!c# EXCEL 问题!不会的进来灌水有分!

龍月 2010-08-31 04:13:59
说下情况:
我 现在 有 Interop.Excel.Application excel 对象
      
public Interop.Excel.Workbooks oBooks= excel.Workbooks;
Object refmissing = System.Reflection.Missing.Value;
foreach (Interop.Excel.Workbook temp in oBooks)
{
MessageBox.Show(temp.Name);
temp.Close(false, refmissing, false);


}

oBooks 里面有 一个 xls 文件, 并能显示 出 temp.name 为 文件名称;
messagebox 显示 出文件名
temp.Close(false, refmissing, false);
执行无效果,没有 关闭 这个打开的 xls 文件

当我再次打开的 这个xls 文件的时候 提示 已经打开过了, 也就是说 temp.close 没有作用

请问 怎么才能 关闭 Interop.Excel.Workbooks 中的 某个 打开的 xls 文件!
...全文
368 69 打赏 收藏 转发到动态 举报
写回复
用AI写文章
69 条回复
切换为时间正序
请发表友善的回复…
发表回复
glest 2010-09-01
  • 打赏
  • 举报
回复
我是来曾分的
龍月 2010-09-01
  • 打赏
  • 举报
回复
结贴了
龍月 2010-09-01
  • 打赏
  • 举报
回复
[Quote=引用 63 楼 gramaster 的回复:]
汗,LZ啊,C#做EXCEL开发关闭进程可是个难题啊,你要想正常关闭一个XLS,至少我个人还没见过,因为似乎跟这个XLS相关的任何东西你都要自己手动回收的,而很多东西你根本就不知道是不是应该回收的,这样导致XLS其实没关闭,所以一般都是直接KillProcess的(所有的XLS都KILL了)。
LZ你干脆打开一个XLS操作KILL,然后再打开另外一个,也只有这样了。
[/Quote]

结束进程的我 已经做出来
但是 我 要的不是结束进程
我能获取到 excel 的 对象
但是 关闭不了 里面的 workbook
mark620 2010-09-01
  • 打赏
  • 举报
回复
gramaster 2010-09-01
  • 打赏
  • 举报
回复
汗,LZ啊,C#做EXCEL开发关闭进程可是个难题啊,你要想正常关闭一个XLS,至少我个人还没见过,因为似乎跟这个XLS相关的任何东西你都要自己手动回收的,而很多东西你根本就不知道是不是应该回收的,这样导致XLS其实没关闭,所以一般都是直接KillProcess的(所有的XLS都KILL了)。
LZ你干脆打开一个XLS操作KILL,然后再打开另外一个,也只有这样了。
myhope88 2010-09-01
  • 打赏
  • 举报
回复
把excel进程关掉呗
龍月 2010-09-01
  • 打赏
  • 举报
回复
[Quote=引用 58 楼 yile365 的回复:]
我感觉应该是需要把整个EXCEl文件关闭,等到需要时在打开,你上边写的应该是打开了一个EXCEL文件,里边有多张表,你想关闭其中的一张表,我估计是不可能吧~
新手 不知道回答的是否正确
[/Quote]

你说的 是我理想状态
我 没法实现
控件打开的 不是 第二个 excel 进程
yile365 2010-09-01
  • 打赏
  • 举报
回复
我感觉应该是需要把整个EXCEl文件关闭,等到需要时在打开,你上边写的应该是打开了一个EXCEL文件,里边有多张表,你想关闭其中的一张表,我估计是不可能吧~
新手 不知道回答的是否正确
Relict 2010-09-01
  • 打赏
  • 举报
回复
帮顶
sxy79 2010-09-01
  • 打赏
  • 举报
回复
灌灌更健康
zfh198601 2010-09-01
  • 打赏
  • 举报
回复
我是打酱油的。
天下如山 2010-08-31
  • 打赏
  • 举报
回复
纯拿分
龍月 2010-08-31
  • 打赏
  • 举报
回复
[Quote=引用 44 楼 computerfox 的回复:]
你是在web浏览器中处理的?
阿捷
[/Quote]
是啊的
内嵌 到form 中 的 Axwebroser 控件
特别 2010-08-31
  • 打赏
  • 举报
回复
未出现楼主所说情况,
楼主说一下EXCEL的版本
最好将整个EXCEL的操作代码都贴出来
L3nnon 2010-08-31
  • 打赏
  • 举报
回复
哇。。 真好,那我灌你一下吧。。
顶顶。。。
shinianjingmeng 2010-08-31
  • 打赏
  • 举报
回复
不好意思,灌水的来了...
捷哥1999 2010-08-31
  • 打赏
  • 举报
回复
你是在web浏览器中处理的?
龍月 2010-08-31
  • 打赏
  • 举报
回复
[Quote=引用 41 楼 wuyq11 的回复:]
xlApp.Workbooks.Close();
xlApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(ws);
System.Runtime.InteropServices.Marshal.ReleaseComObject(wb);
System.Runtime.InteropServi……
[/Quote]
大哥,还是不行,我用的 AXwebroser 控件 加载的excel 通过AXwebroser 事件 获得了 加载excel的 对象,但是 貌似 这个对象 不是 真正的 对象,是克隆过来的,不是真正的进程对象。 我只是想关掉 excel 对象中 加载的一个xls,可能打开了多个xls ,不想结束其他的 xls 文件
Nick黄 2010-08-31
  • 打赏
  • 举报
回复
我是来打酱油的、Up!
wuyq11 2010-08-31
  • 打赏
  • 举报
回复
xlApp.Workbooks.Close();
xlApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(ws);
System.Runtime.InteropServices.Marshal.ReleaseComObject(wb);
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
xlApp = null;
wb = null;
ws = null;
System.Diagnostics.Process myproc= new System.Diagnostics.Process();
foreach (Process thisproc in Process.GetProcessesByName(processName)) {
if(!thisproc.CloseMainWindow()){
thisproc.Kill();
}}

注意操作环境及相关权限
加载更多回复(37)

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧