Eu estou desenvolvendo uma macro para a organização em que trabalho, e eu
preciso criar uma folha na planilha com nome dinâmicamente alocado.

Nomes de planilhas do Calc sté onde eu pude perceber só podem conter
espaços, caracteres alfanuméricos e underlines.

O nome da planilha tem que incluir a data e o horario de criação. Eu vou
incluir os trechos de código aqui:


// cria o nome da planilha. Observe que, se eu manualmente inserir o string
criado abaixo no Calc, o OOo não dá erro.
Calendar horaLocal = Calendar.getInstance();
sheetName = new StringBuffer("Tabela de Preços ");
sheetName.append(horaLocal.get(Calendar.DAY_OF_MONTH ));
sheetName.append("_");
sheetName.append(horaLocal.get(Calendar.MONTH ));
sheetName.append("_");
sheetName.append(horaLocal.get(Calendar.YEAR ));
sheetName.append(" ");
sheetName.append(horaLocal.get(Calendar.HOUR_OF_DAY ));
sheetName.append("h ");
sheetName.append(horaLocal.get(Calendar.MINUTE ));
sheetName.append("m ");
sheetName.append(horaLocal.get(Calendar.SECOND ));
sheetName.append("s");


// cria a nova planilha, com a referencia para acessá-la.
if(!xSheets.hasByName(sheetName.toString()  )  ) xSheets.insertNewByName(
sheetName.toString() , (short)0 );
Object sheet = xSheets.getByName(sheetName.toString() );
XSpreadsheet xSpreadsheet = (XSpreadsheet)UnoRuntime.queryInterface(
XSpreadsheet.class, sheet);



O runtime do OOo dá erro quando ele tenta invocar o método insertNewByName
com os parâmetros dados.

xSheets.insertNewByName( sheetName.toString() , (short)0 );

se eu colocar no lugar de sheetName.toString() um string estático, um
stringbuffer menor, dá o mesmo erro.
o único modo de fazer o trecho acima rodar encontrado foi colocar

xSheets.insertNewByName( "Tabela de Precos" , (short)0 ); , o que é
insatisfatório por não conter a data e hora de criação.

Alguma ajuda?

Responder a