[RESOLVIDO] Como alterar uma linha de uma planilha no excel já existente

15 respostas
K

public class Main { public static void main(String[] args) throws IOException { //FileInputStream stream = new FileInputStream("c:/planilha.xls"); FileOutputStream stream = new FileOutputStream("c:/planilha.xls"); //HSSFWorkbook wb = new HSSFWorkbook(stream); HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet("Sheet1"); HSSFRow row = sheet.createRow(3); HSSFCell cell = row.createCell((short) 2); cell.setCellValue("Teste"); wb.write(stream); //System.out.println(cell.getStringCellValue()); stream.close(); } }

Prezados,

Este código acima ele consegue inserir o texto no lugar desejado só que ele “recria” a planilha.
Gostaria de saber como posso fazer uma alteração na planilha sem precisar recria-la.

Grato!

15 Respostas

F

Se deu null pointer na linha com o código HSSFCell cell = row.getCell((short) 0); isso quer dizer que row está com valor nulo, não foi inicializada a variável. Imagine em runtime tentar acessar um método de uma instância a qual não existe, isso vai dar null pointer.

K

Percebi isso. E já até tirei do topic rsrs.

Minha questão agora é como alterar um contéudo da planilha. Poderia me ajudar?

F

Usei POI faz tempo e não me lembro, mas da mesma maneira que você pode ler você pode escrever, tente achar a API pra te ajudar.

F

Por exemplo http://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFCell.html

K

Eu tenho a api aqui. Do poi to tentando mais eu consigo ler. Não consigo é alterar o conteudo sem apagar o que já está escrito.

_

eai kra blz?

tenho um exemplo bem bacana, vou te passar assim que chegar em ksa!!!
falow
t+++

K

barros:
eai kra blz?

tenho um exemplo bem bacana, vou te passar assim que chegar em ksa!!!
falow
t+++

Demora mto? rsrs.

_

Somente estarei em ksa hj depois das 22hs, mas assim q chegar e caso vc naum tenha resolvito teu problema…te repasserei meu exemplo.

K
_barros_:
Somente estarei em ksa hj depois das 22hs, mas assim q chegar e caso vc naum tenha resolvito teu problema...te repasserei meu exemplo.

Blz.. Vou tentando.. eu to com um problema no seguinte:

public class Main {
	public static void main(String[] args) throws IOException {
		HSSFWorkbook hssfworkbook = null;
		POIFSFileSystem fs =
[color=red]			new POIFSFileSystem(new FileInputStream("c:/planilha.xls"));[/color]
		hssfworkbook = new HSSFWorkbook(fs);

		// HSSFStream       hssfstream = hssf.hssfstream;
		HSSFWorkbook     wb     = hssfworkbook;
		FileOutputStream stream = new FileOutputStream("c:/planilha.xls");

		HSSFSheet        sheet  = wb.getSheet("planilha");
		HSSFRow  row  = sheet.getRow(3);
		HSSFCell cell = row.getCell(( short ) 2);

		cell.setCellType(HSSFCell.CELL_TYPE_STRING);
		cell.setCellValue("MODIFIED CELL!!!!!");
		wb.write(stream);
		stream.close();
	}
}

O código acima extrai da página da api. Estou tentando aqui fazer ele funcionar mas apresenta um erro:

Exception in thread "main" java.io.IOException: Unable to read entire header; 174 bytes read; expected 512 bytes
	at org.apache.poi.poifs.storage.HeaderBlockReader.<init>(HeaderBlockReader.java:81)
	at org.apache.poi.poifs.filesystem.POIFSFileSystem.<init>(POIFSFileSystem.java:83)
	at Main.main(Main.java:18)

Aonda sinalizei com a linha vermelha. Acho que após isso poderá dar certo. Mas pq do erro? Não entendi.

F

Tem algo errado ainda, mas como disse não uso faz tempo e não lembro. Dê uma olhada em http://www.onjava.com/pub/a/onjava/2003/04/16/poi_excel.html e [url]http://www.java-tips.org/other-api-tips/jexcel/how-to-create-an-excel-file.html[/url}. Leia com calma, tente entender o processo todo.

K

Consegui pela POI mesmo descobri o que estava de errado! Mais vlw!

D

Oi,

Estou com esse mesmo problema, não consigo alterar o conteudo da minha planlha so consigo criar uma nova.
Teria como me passar como vc resolveu?

valeu
T+

J

Olá, Não querendo revive um tópico morto, porem ates de abrir um tópico eu vou tentar esse á existente =/
eu estou tentando Editar uma planilha já existente, por questões de padrões e por que a planilha eh meio complexa… eu soh quero inserir um conteudo nas celulas X,Y e Z… procurei em VARIOS tópicos na net e não consegui nada consistente… Estou usando a biblioteca POI tbm…
não seria o caso de criar uma planilha nova para fazer isso…
O código para resolver o meu problema teoricamente seria simples, soh quero incluir uma String em algumas celulas… estou com o mesmo problema do nosso amigo desse tópico, eu soh consigo criar planilhas novas…
Se algué puder me ajudar eu agradeceria, creio q seja um codigo simples…

Agradeço a atenção

PS: não entendi tbm a documentação muito bem…

J

se alguem tivesse um exemplo de uma parte de codigo para alterar uma planilha aj existente seria de grande ajuda…

J

bem, olhando em outro topico eu consegui fazer em meu programa... fica aew a dica pra quem não conseguiu....

try{

            FileOutputStream stream = new FileOutputStream("c:/planilha2.xls");
            //HSSFWorkbook wb = new HSSFWorkbook(stream);
            HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream("c:/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){
            
        }
Criado 11 de fevereiro de 2008
Ultima resposta 27 de out. de 2010
Respostas 15
Participantes 5