Boa tarde galera…estou com uma dúvida…estou utilizando a JExcel API…estou com uma dúvida…não sei se é possível fazer isto : tenho uma planilha base e gostaria de estar escrevendo nela…mas há um porém…toda vez que eu adicionar novos campos, devo salva-la com um outro nome (salvar com data e hora local eu já implementei)…o problema está, é que, ao salvar esta planilha, a planilha base não pode sofrer nenhuma alteração nem em seu nome… Estou desenvolvendo da seguinte forma :
[code]public class ReadExcel {
public static void main(String[] args) throws IOException {
ReadExcel test = new ReadExcel();
test.setInputFile("c:/Users/Filipe/Documents/dataNomeArquivo.xls");
test.read();
}
private String inputFile;
public void setInputFile(String inputFile) {
this.inputFile = inputFile;
}
public void read() throws IOException {
File inputWorkbook = new File(inputFile);
Workbook w;
try {
w = Workbook.getWorkbook(inputWorkbook);
Locale locale = new Locale("pt", "BR");
GregorianCalendar calendar = new GregorianCalendar();
SimpleDateFormat formatador = new SimpleDateFormat("dd' de 'MMMMM' de 'yyyy' - 'HH'h'mm'min'ss's'", locale);
System.out.println(formatador.format(calendar.getTime()));
String filename = "c:/Users/Filipe/Documents/" + formatador.format(calendar.getTime()) + ".xls";
WorkbookSettings ws = new WorkbookSettings();
ws.setLocale(new Locale("pt", "BR"));
WritableWorkbook workbook = Workbook.createWorkbook(new File(filename), ws);
WritableSheet s = workbook.createSheet("Folha1", 0);
WritableSheet s1 = workbook.createSheet("Folha1", 0);
writeDataSheet(s);
// writeImageSheet(s1);
workbook.write();
workbook.close();
} catch (IOException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
}
private static void writeDataSheet(WritableSheet s) throws WriteException {
WritableFont wf = new WritableFont(WritableFont.ARIAL, 10, WritableFont.BOLD);
WritableCellFormat cf = new WritableCellFormat(wf);
cf.setWrap(true);
Label teste = new Label(0, 20, "Data", cf);
s.addCell(teste);
}
[/code]
Neste teste que estou fazendo, ele cria uma nova planilha e adiciona o texto “Data” no campo especificado…mas ele não “salva” junto o conteúdo da planilha base…Alguma idéia pessoal? []´s
assim…um exemplo : eu tenho uma planilha base chamada de Contatos com alguns campos : Nome, Endereço, Cidade. Quero poder adicionar à esta planilha os valores de cada campo.Feito isto, quero que salve este documento com o nome da data e hora local em outro arquivo e mantenha a planilha base (Contatos) com os campos Nome, Endereço e Cidade nulos, ou seja, sem nada…falando em grosso modo, é como tu editasse ela manualmente, e ao salvar, clicar em salvar como e renomear para outro nome, ou seja, a planilha anterior fica salva sem nenhum valor nos devidos campos enquanto que a planilha identificado com data e hora local os campos ficam preenchidos…não sei se consegui ser claro…hehehe…
Entendi, você quer utilizar uma planilha com o header pronto, para somente acrescentar as informações e salvar em outro arquivo, mantendo o arquivo base do jeito que sempre foi.
Isso é muito simples, mas não sei quanto a biblioteca que você está usando.
Trate os dois arquivos separadamente, por exemplo.
Leia o conteúdo da planilha base e ao mesmo tempo vai escrevendo na nova planilha.
Quando acabar a leitura da planilha base, comece a inserir somente o conteúdo que deseja na nova planilha e salve com nome diferente.
Eu particularmente nunca usei JExcel API. Sempre gostei muito da Apache POI. é excelente.
Não ajudei em praticamente nada, não conheço essa biblioteca e teria que dar uma boa olhada, quando chegar em casa vejo direitinho.
Mas você realmente precisa fazer isso? não convém inserir sempre essa parte no código? acredito que você vai ter uma perda de desempenho, lendo e escrevendo novamente, escreva deuma vez. como a planilha base é padrão, não terá problema.
Oi ssh, fiquei um tempo parado com este problema do excel pois estava atucanado com outras coisas…comecei a dar uma olhada no apache poi…achei bem legal e até melhor que a api que havia lhe dito…comecei a dar uma brincada no apache poi…comecei a fazer um teste, mas não rolou…:
[code]public class PoiJakarta {
public static void main(String[] args) throws FileNotFoundException, IOException {
try{
Locale locale = new Locale("pt", "BR");
GregorianCalendar calendar = new GregorianCalendar();
SimpleDateFormat formatador = new SimpleDateFormat("dd' de 'MMMMM' de 'yyyy' - 'HH'h'mm'min'ss's'", locale);
FileOutputStream stream = new FileOutputStream("c:/Users/Filipe/Documents/"+ formatador.format(calendar.getTime()) + ".xls");
HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream("c:/Users/Filipe/Documents/planilha.xls"));
HSSFSheet sheet = wb.getSheet("Plan1");
HSSFRow row = sheet.createRow(3);
HSSFCell cell = row.createCell((short) 2);
cell.setCellValue("Teste");
wb.write(stream);
//System.out.println(cell.getStringCellValue());
stream.close();
}catch(Exception e){
}
}
}[/code]
Estou fazendo algo errado…acho que não consegui entender bem a lógica que vc me passou…Terias como me passar um exemplo simples?