Usuário com melhor resposta
c# com Excel

Pergunta
-
Boa tarde, estou desenvolvendo uma aplicação em c#, que em certo momento exporto
dados para o Excel, acontece que só consigo finalizar o excel matando o processo, mas não quero fazer
assim pois o usuario pode estar com outro excel aberto.
Ja procurei bastante e não achei nada que funcione.
Desde ja agradeço..
valeu..
Respostas
-
Valeu pelas dicas pessoal, consegui resolver pegando o Pid do processo aberto do Excel,
primeiro eu verifico o total de processos do excel aberto.
//passa a quantidade de Processos atuais do excel para impedir
//que outro excel aberto seja fechado
Process[] ProcessoExcel = Process.GetProcessesByName("EXCEL");
foreach (Process processo in ProcessoExcel)
{
lclsExcel.PidProcessoExistente += processo.Id;
}
depois faço a soma novamente e faço a diferença, entao mato o processo pelo Pid
//pega o Pid do processo atual
Process[] ProcessoExcel = Process.GetProcessesByName("EXCEL");
foreach (Process processo in ProcessoExcel)
{
mintPidSoma += processo.Id;
}
//subtrai do que foi passado por quem chamou
lintPidProcesso = mintPidSoma - mintPidProcessoExistente;
//mata o processo pelo Pid
Process ProExcel = Process.GetProcessById(lintPidProcesso);
ProExcel.Kill();
se tiver outro processo aberto ele não mata.obrigado a todos
- Sugerido como Resposta Fernando Henrique Inocêncio Borba FerreiraMicrosoft employee, Moderator segunda-feira, 5 de dezembro de 2011 15:46
- Marcado como Resposta Wellington F Silva segunda-feira, 5 de dezembro de 2011 16:04
Todas as Respostas
-
-
Olá Wellington,
Vc poderia postar o código que esta utilizando para fechar o Excel?
Vc já experimentou acessar o ExcelApplication e apenas fechar os WorkBooks?
Exemplo:
excelApp.Workbooks.Close();
[]s!
Fernando Henrique Inocêncio Borba Ferreira
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.wordpress.com/
Twitter: @ferhenrique -
Para acabar com esse tipo de problema você pode usar uma biblioteca que não dependa do processo do Excel para gerar arquivos .xls. A NPOI é um exemplo: http://npoi.codeplex.com/
-
Valeu pelas dicas pessoal, consegui resolver pegando o Pid do processo aberto do Excel,
primeiro eu verifico o total de processos do excel aberto.
//passa a quantidade de Processos atuais do excel para impedir
//que outro excel aberto seja fechado
Process[] ProcessoExcel = Process.GetProcessesByName("EXCEL");
foreach (Process processo in ProcessoExcel)
{
lclsExcel.PidProcessoExistente += processo.Id;
}
depois faço a soma novamente e faço a diferença, entao mato o processo pelo Pid
//pega o Pid do processo atual
Process[] ProcessoExcel = Process.GetProcessesByName("EXCEL");
foreach (Process processo in ProcessoExcel)
{
mintPidSoma += processo.Id;
}
//subtrai do que foi passado por quem chamou
lintPidProcesso = mintPidSoma - mintPidProcessoExistente;
//mata o processo pelo Pid
Process ProExcel = Process.GetProcessById(lintPidProcesso);
ProExcel.Kill();
se tiver outro processo aberto ele não mata.obrigado a todos
- Sugerido como Resposta Fernando Henrique Inocêncio Borba FerreiraMicrosoft employee, Moderator segunda-feira, 5 de dezembro de 2011 15:46
- Marcado como Resposta Wellington F Silva segunda-feira, 5 de dezembro de 2011 16:04