C#导出Excel 出现问题

tidy_win 2009-03-19 08:13:35
为什么我执行导出Excel的时候电脑会启动Excel进程 如何杀掉这个进程 啊
...全文
200 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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窗体就没事嘛。
帮顶一下哦
具体内容请参考我的BLOG:http://blog.csdn.net/smallwhiteyt/archive/2009/11/08/4784771.aspx 如果你耐心仔细看完本文,相信以后再遇到导出EXCLE操作的时候你会很顺手觉得SO EASY,主要给新手朋友们看的,老鸟可以直接飘过了,花了一晚上的时间写的很辛苦,如果觉得对你有帮助烦请留言支持一下,我会写更多基础的原创内容来回报大家。 C#导出数据到EXCEL表格是个老生常谈的问题了,写这篇文章主要是给和我一样的新手朋友提供两种导出EXCEL的方法并探讨一下导出的效率问题,本文中的代码直接就可用,其中部分代码参考其他的代码并做了修改,抛砖引玉,希望大家一起探讨,如有不对的地方还请大家多多包涵并指出来,我也是个新手,出错也是难免的。 首先先总结下自己知道的导出EXCEL表格的方法,大致有以下几种,有疏漏的请大家补充。 1.数据逐条逐条的写入EXCEL 2.通过OLEDB把EXCEL做为数据源来写 3.通过RANGE范围写入多行多列内存数据到EXCEL 4.利用系统剪贴板写入EXCEL 好了,我想这些方法已经足够完成我们要实现的功能了,方法不在多,在精,不是么?以上4中方法都可以实现导出EXCEL,方法1为最基础的方法,意思就是效率可能不是太高,当遇到数据量过大时所要付出的时间也是巨大的,后面3种方法都是第一种的衍生,在第一种方法效率低下的基础上改进的,这里主要就是一个效率问题了,当然如果你数据量都很小,我想4种方法就代码量和复杂程度来说第1种基本方法就可以了,或当你的硬件非常牛逼了,那再差的方法也可以高效的完成也没有探讨的实际意义了,呵呵说远了,本文主要是在不考虑硬件或同等硬件条件下单从软件角度出发探讨较好的解决方案。

111,098

社区成员

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

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

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