永发信息网

c# 导出数据到Excel程序关闭后 进程中有个EXCEL进程怎么自动关闭

答案:2  悬赏:50  手机版
解决时间 2021-03-23 04:14
程序如下
[code=csharp]
private void button3_Click(object sender, EventArgs e)

Microsoft.Office.Interop.Excel._Application excel = new Microsoft.Office.Interop.Excel.Application();
excel.Application.Workbooks.Add(true);
Microsoft.Office.Interop.Excel.Workbooks books = (Microsoft.Office.Interop.Excel.Workbooks)excel.Workbooks;
Microsoft.Office.Interop.Excel.Workbook book = (Microsoft.Office.Interop.Excel.Workbook)(books.Add(Type.Missing));
Microsoft.Office.Interop.Excel.Worksheet sheet = (Microsoft.Office.Interop.Excel.Worksheet)book.ActiveSheet;
sheet.Name = "订单信息";
for (int i = 0; i <= 5; i++)
{
excel.Cells[1, i + 1] = dataGridView1.Columns[i].HeaderText;
}
for (int i = 0; i <= allrows; i++)
{
for (int j = 0; j <= 5; j++)
{
excel.Cells[i + 2, j + 1] = alldingdan[i, j];
}
}
[/code]

Range allColumn = excel.Columns;
allColumn.AutoFit();
string morenlujing = AppDomain.CurrentDomain.BaseDirectory;
MessageBox.Show(morenlujing + "");
System.IO.File.Delete(morenlujing + "订单信息.xls");
sheet.SaveAs(morenlujing + "订单信息.xls", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing);
book.Close(false, Type.Missing, Type.Missing);
books.Close();
excel.Quit();
最佳答案
1、应该有个application实例,请销毁
2、如果实在不行,就用进程杀一下
全部回答
//导出excel的方法 
 private void exportexcel() 
 { 
 dataset ds=dtsselect;//数据源 
 if(ds==null) return; 
 
 string savefilename=""; 
 bool filesaved=false; 
 savefiledialog savedialog=new savefiledialog(); 
 savedialog.defaultext ="xls"; 
 savedialog.filter="excel文件|*.xls"; 
 savedialog.filename ="sheet1"; 
 savedialog.showdialog(); 
 savefilename=savedialog.filename; 
 if(savefilename.indexof(":")<0) return; //被点了取消 
 
 excel.application xlapp=new excel.application(); 
 
 if(xlapp==null) 
 { 
 messagebox.show("无法创建excel对象,可能您的机子未安装excel"); 
 return; 
 } 
 
 excel.workbooks workbooks=xlapp.workbooks; 
 excel.workbook workbook=workbooks.add(excel.xlwbatemplate.xlwbatworksheet); 
 excel.worksheet worksheet=(excel.worksheet)workbook.worksheets[1];//取得sheet1 
 //写入字段 
 for(int i=0;i<ds.tables[0].columns.count;i++) 
 { 
 worksheet.cells[1,i+1]=ds.tables[0].columns[i].columnname; 
 } 
 //写入数值 
 
 for(int r=0;r<ds.tables[0].rows.count;r++) 
 { 
 for(int i=0;i<ds.tables[0].columns.count;i++) 
 { 
 worksheet.cells[r+2,i+1]=ds.tables[0].rows[r][i]; 
 } 
 system.windows.forms.application.doevents(); 
 } 
 worksheet.columns.entirecolumn.autofit();//列宽自适应。 
 if(cmbxtype.text!="notification") 
 { 
 excel.range rg=worksheet.get_range(worksheet.cells[2,2],worksheet.cells[ds.tables[0].rows.count+1,2]); 
 rg.numberformat="00000000"; 
 } 
 if(savefilename!="") 
 { 
 try 
 { 
 workbook.saved =true; 
 workbook.savecopyas(savefilename); 
 filesaved=true; 
 } 
 catch(exception ex) 
 { 
 filesaved=false; 
 messagebox.show("导出文件时出错,文件可能正被打开!\n"+ex.message); 
 } 
 } 
 else 
 { 
 filesaved=false; 
 } 
 xlapp.quit(); 
 gc.collect();//强行销毁 
 if(filesaved && system.io.file.exists(savefilename)) system.diagnostics.process.start(savefilename); //打开excel 
 } 
需要在com组件中找到microsoft excel 11.0(不同的版本可能不同,我的是office2003).添加该引用。然后在程序中using excel; 
(vs2008:using microsoft.office.interop.excel;)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
信基督教的不能过年烧纸吗?
赛里木湖国际湿地公园管理局在哪里啊,我有事
车轮往哪个方向轴呀
proe用薄壁特征创建零件壁厚被限制怎样设置
适合发说说的句子伤感,适合发说说的句子
服装销售行业如何建立手工帐
世界上第一台笔记本是什么品牌?
苏州自驾到宜兴过路费是多少
天猫店不退款怎么办,天猫超市退货后不给退款
费列罗在上海有生产厂吗
靓仔造型怎么去啊,有知道地址的么
定义在R上的单调函数f(x)满足对任意x,y均
journal of geotechnical and geoenvironment
晚安说说简短句子大全,超级经典的唯美古风句
简述课税权重叠的情况
推荐资讯
靠窗户肩膀被风吹到了,有点痒,怎么回事?怎
路由器如何连接W316R无线路由器实现WIFI功能
和一个朋友要绝交 他让我说最后一句话 我想让
下列各句中,没有语病的一句是A.金先生对我所
90年代看过一部电视剧武打片,是个独眼龙还是
做一个有道德的人标语,关于素质教育的名人名
全自动鸡蛋喷码机多少钱一台
属兔男和属鸡女的相合属相
好宜康盲人保健按摩所这个地址在什么地方,我
长的丑注定被人欺负吗?怎么还击?
夸赞体育老师的诗句,小学毕业生赞美体育老师
二百万存浙商银行三个月利息是多少?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?