É o seguinte… eu preciso pegar uma planilha ja existente com alguns macros nela… onde antigamente o usuario inseria os dados na mão e apertava em um botão e ela fazia uns calculos e gerava uma porrada de relatorios… eu consegui abrir esta planilha com o apache - poi e editala porem apos eu editala pela aplicação todoas as macros que estão nela são deletadas… e eu não tenho como pegar o codigo das macros e colocar na aplicação pois devido a extensibilidade dos relatorios e calculos que ja são feitas pelas macros isto fica inviavel refazer no codigo… alguem sabe como posso contornar isto? tem alguma outra api que suporte macros?
Problema com apache POI porfavor me ajudeeeemmm
11 Respostas
Cara, o mundo não é só Java.
Veja se alguém conseguiu fazer um script em Excel VBA ou VBScript que possa ser invocado por cscript.exe.
É pena que estou indo para casa, senão escrevia um exemplo bobo só para você ter uma idéia.
cscript.exe o que é isto?
Você precisa consultar alguém que domine mais as tecnologias Microsoft.
É que é o seguinte: se o Excel estiver instalado na máquina, ele disponibiliza a automação do Excel através não só das macros (que vêm dentro dos arquivos .XLS) mas também a partir de algum programa externo de script, como o cscript.exe, que interpreta programas VBScript e JScript.
Que tal dar uma perguntadinha para um seu colega que seja Microsoft-Man?
É coisa bastante simples - basicamente você precisa criar um arquivo .vbs, que é um arquivo-texto mesmo, criar um programa que referencie a tal planilha pelo Excel, modifique os valores conforme desejado, e solicite o recálculo das fórmulas.
Pegue o código a seguir, copie-ou para um arquivo “teste.vbs”, crie um arquivo “C:\teste.xls” (com o Excel, é claro), salve-o, rode o programa abaixo com o comando:
cscript teste.vbs
e então veja na célula A1 o valor gravado em teste.xls.
Set App = CreateObject ("Excel.Application")
App.Workbooks.Open ("C:\teste.xls")
App.Visible = False
App.UserControl = False
'-- Setando o valor da célula A1 para 1000
App.Worksheets(1).Range("A1").Value = 1000
'-- Recalculando
App.Calculate
'-- Salvando
For Each w In App.Workbooks
w.Save
Next
App.Quit
Set App = Nothing
Esqueci de avisar que esse programa também recalcula as fórmulas. Ponha algumas fórmulas nesse arquivo teste.xls que dependam da célula A1 e veja que elas serão recalculadas direitinho.
eu tenho como me conectar no banco com este script? se tem como eu faço com o oracle?
tem algum exemplo?
Se tu achar a sintaxe do VBScript hedionda (como eu acho) vc pode usar JScript 
basta fazer
e voilá!
Outra forma seria usar Groovy
http://groovy.codehaus.org/COM+Scripting
Groovy utiliza Jacob
Ai basta escolher uma abordagem e mandar bala 
Carinha, eu não disse para você fazer TUDO via script.
É para fazer SÓ o que você não consegue fazer em Java.
Eu sugiro que você faça o seguinte:
- Conecte-se ao banco em Java mesmo (que é o que funciona bem e você sabe melhor)
- Crie um script cscript.vbs a partir dos dados que você puxou do banco - você sabe criar arquivos-texto, não?
- Chame o cscript.vbs com Runtime.exec
OK?
Eu sei fazer mas não vou ajudar só por causa do “por favor me ajudem” no seu tópico, quem sabe assim vc aprende.
Eu sei fazer mas não vou ajudar só por causa do “por favor me ajudem” no seu tópico, quem sabe assim vc aprende.
o que tem de errado o “por favor me ajudem”?
thingol isto que vc disse de criar o codigo vb dinamicamente e usar java pra conectar no banco e tals ate me veio a cabeça mas o problema e que e meio gamgam… não teria uma forma mais elegante de fazer?
Tem como executar as macros tbm? do mesmo modo que faz com as formulas… mas com as macros?