C#导出Excel 出现问题

tidy_win 2009-03-19 08:13:35
为什么我执行导出Excel的时候电脑会启动Excel进程 如何杀掉这个进程 啊
...全文
184 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
moonshineidolon 2009-03-20
  • 打赏
  • 举报
回复
数据在导出execl过程中,这个进程自动启动,你如果杀掉了,就导不出来数据了

数据导出结束,释放资源。

要不你就把数据导出成csv格式的,如果没有格式要求,这个快,还能用excel打开。
tidy_win 2009-03-20
  • 打赏
  • 举报
回复
看不懂啊
crystalsky21504119 2009-03-20
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 telent 的回复:]
在代码中调用Excel应用程序的Quit方法时,要放到最外层。

fn1(){

fn2(){ Excell启动 等操作}
Application.Quit();
}
这只是其中的一种方法。
[/Quote]

我导出的时候就是用的这种方法,导出结果打开没什么问题!
apchyzui 2009-03-20
  • 打赏
  • 举报
回复
[DllImport("User32.dll", CharSet = CharSet.Auto)]
public static extern int GetWindowThreadProcessId(IntPtr hwnd, out int ID);
public static void Kill(Microsoft.Office.Interop.Excel.Application excel)
{
IntPtr t = new IntPtr(excel.Hwnd); //得到这个句柄,具体作用是得到这块内存入口

int k = 0;
GetWindowThreadProcessId(t, out k); //得到本进程唯一标志k
System.Diagnostics.Process p = System.Diagnostics.Process.GetProcessById(k); //得到对进程k的引用
p.Kill(); //关闭进程k
}

以上函数可以关闭你使用的进程,而不会关闭其他EXCEL进程.
这个方法也是从网上找来的,希望对你有用.
telent 2009-03-20
  • 打赏
  • 举报
回复
在代码中调用Excel应用程序的Quit方法时,要放到最外层。

fn1(){

fn2(){ Excell启动 等操作}
Application.Quit();
}
这只是其中的一种方法。
lsy999 2009-03-20
  • 打赏
  • 举报
回复
哪位c#有沒倒出excel的代碼學習
lyx717 2009-03-20
  • 打赏
  • 举报
回复
对啊 启动了 excel,怎么可能没有进程呢


不明白
萤火架构 2009-03-20
  • 打赏
  • 举报
回复
使用Office Excel组件的话 需要关闭这个进程,
我有一个方案,只关闭这个进程,而不会影响其它Excel进程, 你可以参考下
http://blog.bossma.cn/archives/2009/02/257
tidy_win 2009-03-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wuyq11 的回复:]
System.Diagnostics.Process[] myProcesses;
myProcesses =
System.Diagnostics.Process.GetProcessesByName("EXCEL");
foreach (System.Diagnostics.Process instance in myProcesses)
{
instance.Kill();
}
[/Quote]这样就又出现一个问题,就是当替换已有的EXCEL时总是报两变替换提示
深海之蓝 2009-03-19
  • 打赏
  • 举报
回复
我记得有一个close方法吧
阿泰 2009-03-19
  • 打赏
  • 举报
回复
引用了excel自然会起一个进程,使用无需excel导出excel的方法就不启动进程了
可参考
http://www.cnblogs.com/unruledboy/archive/2004/07/07/22093.html
南哥1207 2009-03-19
  • 打赏
  • 举报
回复

beforeTime = DateTime.Now;
ExcelApp = new Excel.Application();
afterTime = DateTime.Now;


Process[] processes = Process.GetProcessesByName("Excel");

foreach (Process process in processes)
{
startTime = process.StartTime;
if (startTime > beforeTime && startTime < afterTime)
{
process.Kill();
}
}
wuyq11 2009-03-19
  • 打赏
  • 举报
回复
System.Diagnostics.Process[] myProcesses;
myProcesses =
System.Diagnostics.Process.GetProcessesByName("EXCEL");
foreach (System.Diagnostics.Process instance in myProcesses)
{
instance.Kill();
}
zzyzgydotnet 2009-03-19
  • 打赏
  • 举报
回复
kill
tidy_win 2009-03-19
  • 打赏
  • 举报
回复
电脑启动了Excel进程刚导出的文件就打不开啊
whowhen21 2009-03-19
  • 打赏
  • 举报
回复
只要没显示Excel窗体就没事嘛。
帮顶一下哦

110,538

社区成员

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

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

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