NullPointer Ajuda [RESOLVIDO]

Pessoal,

Estou com um problema de null pointer, só que não sei o pq… não sei se é por causa da quantidade de registros… pois com menos ele roda…

package br.com.simcard;

import java.io.File;
import java.io.IOException;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import br.com.simcard.dao.PlanilhaGateDAO;

public class VerificarRegistroGate {
	private static final int LINHA_INICIAL = 1;
	private Workbook workbook;
	private Sheet sheet;

	public Date transformaData(String data) {
		Date retorno = null;
		SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy");
		try {
			retorno = formatador.parse(data);
		} catch (ParseException ex) {
			throw new RuntimeException(ex);
		}

		return retorno;
	}

	// CONTADOR DE REGISTROS
	public int NumRegistros() {
		int numReg = 0;
		int soma = 0;
		int linhas = sheet.getRows();
		int pastas = workbook.getNumberOfSheets();

		for (int i = 0; i < pastas; i++) {
			this.sheet = workbook.getSheet(i);
			linhas = sheet.getRows();

			for (int j = LINHA_INICIAL; j < linhas; j++) {
				soma = (linhas + numReg) - 1;
			}
			numReg = soma;
			System.out.println(numReg);
		}
		return numReg;
	}

	public VerificarRegistroGate(File vr, String login) throws Exception,
			IOException, BiffException, ClassNotFoundException, SQLException {
		this.workbook = Workbook.getWorkbook(vr);
		this.sheet = workbook.getSheet(0);

		VerificadorGate(vr, login);
	}

	public void VerificadorGate(File vr, String login) {

		int nuLinhas = sheet.getRows();
		PlanilhaGateDAO dao = new PlanilhaGateDAO();
		NomeArquivo nomeArq = new NomeArquivo();
		nomeArq.setNome(vr.toString());
		Calendar horaAtual = Calendar.getInstance();
		horaAtual.set(Calendar.MILLISECOND, 0);
		int QtdeErro = 0;
		int QtdeAlt = 0;
		int CodProc = 0;

		// CONTA NÚMERO DE REGISTROS
		nuLinhas = NumRegistros();

		// INSERE PROCESSAMENTO
		dao.insereProcessamento(21, (nuLinhas), login, nomeArq.getNome(),
				horaAtual);
		CodProc = dao.CodigoProcessamento();

		for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
			this.sheet = workbook.getSheet(i);
			nuLinhas = sheet.getRows();
			System.out.println("Sheet: " + i);
			for (int nuLinhaAtual = LINHA_INICIAL; nuLinhaAtual < nuLinhas; nuLinhaAtual++) {
				Gate gate = carregarLinha(nuLinhaAtual);

				// VERIFICA SE PLANILHA É VAZIA
				if (gate.getDispositivo().equals("")
						|| gate.getDispositivo().equals(null)) {
					System.out.println("Campo Vazio");
					dao.InsereLogErro(0, "0", nuLinhaAtual, CodProc);
					QtdeErro++;
					dao.QtdeErro(QtdeErro);
					continue;
				}

				// VERIFICA SE O DISPOSITIVO EXISTE
				if (!dao.existeDispositivo(gate.getDispositivo())) {

					// VERIFICA SE O SIMCARD É NULO OU VAZIO
					if (gate.getSimcard().equals(null)
							|| gate.getSimcard().equals("")) {

						// SE FOR...SÓ INSERE NA TB DISPOSITIVO
						System.out.println("Chama insert só na Dispositivo");
						dao.simCardInsereDisp(gate.getDispositivo(),
								gate.getSimcard(), gate.getTecnologia(),
								gate.getApnConfigurada(), gate.getIp(),
								gate.getPorta(), gate.getFonte(),
								gate.getImei(), nomeArq.getNome(), CodProc,
								login, horaAtual);
						QtdeAlt++;

					} else {
						// VERIFICA SE O DISPOSITIVO EXISTE NA TB DISPOSITIVO
						// E O SIMCARD EXISTE NA TABELA DA TELECOM
						if (!dao.existeDispositivo(gate.getDispositivo())
								&& dao.existeSimCard(gate.getSimcard())) {

							// SE NÃO EXISTE DISP E EXISTE SIMCARD...
							// INSERE NA DISPOSITIVO E SIMCARD_DISPOSITIVO
							System.out
									.println("Chama insert na Dispositivo e na SIMCardDsipositivo");
							dao.simCardInsereDispESimCard(
									gate.getDispositivo(), gate.getSimcard(),
									gate.getTecnologia(),
									gate.getApnConfigurada(), gate.getIp(),
									gate.getPorta(), gate.getFonte(),
									gate.getImei(), nomeArq.getNome(), CodProc,
									login, horaAtual);
							QtdeAlt++;

						} else {
							// FAZER O INSERT NA SIMCARD (TELECOM)...DEPOIS...
							System.out.println("Insere na SIMCARD TELECOM");
							dao.simCardInsereTelecom(gate.getSimcard(),
									gate.getFonte(), nomeArq.getNome(),
									CodProc, login, horaAtual);

							// ...INSERE NA DISPOSITIVO E SIMCARD_DISPOSITIVO
							// E...
							System.out
									.println("Insere na DISPOSITIVO e SIMCARDDISPOSITIVO");
							dao.simCardInsereDispESimCard(
									gate.getDispositivo(), gate.getSimcard(),
									gate.getTecnologia(),
									gate.getApnConfigurada(), gate.getIp(),
									gate.getPorta(), gate.getFonte(),
									gate.getImei(), nomeArq.getNome(), CodProc,
									login, horaAtual);
							QtdeAlt++;

							// ...GRAVA NA LOG ERRO COM O CÓDIGO 28
							System.out
									.println("Grava na LOG ERRO - COD 28 NÃO TINHA (FOI INSERIDO) REGISTRO NA TB SIMCARD TELECOM");
							dao.InsereLogErro(28, gate.getSimcard(),
									nuLinhaAtual, CodProc);
							QtdeErro++;
						}
					}

					// DISPOSITIVO EXISTE

				} else {
					// VERIFICA SE PRECISA DE UPDATE
					if (!dao.simCardVerificaUpdateGate(gate.getDispositivo(),
							gate.getSimcard(), gate.getTecnologia(),
							gate.getApnConfigurada(), gate.getIp(),
							gate.getPorta(), gate.getFonte(), gate.getImei(),
							nuLinhaAtual, nomeArq.getNome(), CodProc, login,
							horaAtual)) {

						if ((gate.getSimcard() == null)
								|| (gate.getSimcard() == "")) {
							// GRAVA HISTORICO
							System.out.println("Grava na Histórico");
							dao.HistoricoGATE(gate.getSimcard(),
									gate.getDispositivo(), gate.getFonte(),
									nuLinhaAtual, nomeArq.getNome(), CodProc,
									login);

							// FAZ UPDATE
							System.out.println("Faz UPDATE");
							dao.simCardDispUpdateA(gate.getDispositivo(),
									gate.getSimcard(), gate.getTecnologia(),
									gate.getApnConfigurada(), gate.getIp(),
									gate.getPorta(), gate.getFonte(),
									gate.getImei(), nomeArq.getNome(), CodProc,
									login, horaAtual);

							QtdeAlt++;
							continue;
						}

						// VERIFICA SE PRECISA INSERIR O SIMCARD NA TELECOM PARA
						// A
						// REGRA DO GATEWAY
						if (!dao.existeSimCard(gate.getSimcard())) {
							System.out
									.println("Insere na SIMCARD TELECOM para realizar o update COM ERRO 28 GRAVADO NA LOG ERRO");
							dao.simCardInsereTelecom(gate.getSimcard(),
									gate.getFonte(), nomeArq.getNome(),
									CodProc, login, horaAtual);

							// GRAVA NA LOG ERRO COM O CÓDIGO 28
							dao.InsereLogErro(28, gate.getSimcard(),
									nuLinhaAtual, CodProc);
							QtdeErro++;

							if (!dao.existeDispositivoESimCard(gate
									.getDispositivo())) {

								// GRAVA HISTORICO
								System.out.println("Grava na Histórico");
								dao.HistoricoGATE(null, gate.getDispositivo(),
										gate.getFonte(), nuLinhaAtual,
										nomeArq.getNome(), CodProc, login);

								// ... INSERE NA DISPOSITIVO E
								// SIMCARD_DISPOSITIVO
								// E...
								System.out
										.println("Insere na DISPOSITIVO e SIMCARDDISPOSITIVO");
								dao.simCardInsereDispESimCard(
										gate.getDispositivo(),
										gate.getSimcard(),
										gate.getTecnologia(),
										gate.getApnConfigurada(), gate.getIp(),
										gate.getPorta(), gate.getFonte(),
										gate.getImei(), nomeArq.getNome(),
										CodProc, login, horaAtual);

								// ...FAZ UPDATE
								System.out.println("Faz UPDATE");
								dao.simCardDispUpdateA(gate.getDispositivo(),
										gate.getSimcard(),
										gate.getTecnologia(),
										gate.getApnConfigurada(), gate.getIp(),
										gate.getPorta(), gate.getFonte(),
										gate.getImei(), nomeArq.getNome(),
										CodProc, login, horaAtual);
								QtdeAlt++;

							} else {

								// GRAVA HISTORICO
								System.out.println("Grava na Histórico");
								dao.HistoricoGATE(gate.getSimcard(),
										gate.getDispositivo(), gate.getFonte(),
										nuLinhaAtual, nomeArq.getNome(),
										CodProc, login);

								// FAZ UPDATE
								System.out.println("Faz UPDATE");
								dao.simCardDispUpdateA(gate.getDispositivo(),
										gate.getSimcard(),
										gate.getTecnologia(),
										gate.getApnConfigurada(), gate.getIp(),
										gate.getPorta(), gate.getFonte(),
										gate.getImei(), nomeArq.getNome(),
										CodProc, login, horaAtual);
								QtdeAlt++;

							}

						} else {
							if (!dao.existeDispositivoESimCard(gate
									.getDispositivo())) {

								// GRAVA HISTORICO
								System.out.println("Grava na Histórico");
								dao.HistoricoGATE(null, gate.getDispositivo(),
										gate.getFonte(), nuLinhaAtual,
										nomeArq.getNome(), CodProc, login);

								// ... INSERE NA DISPOSITIVO E
								// SIMCARD_DISPOSITIVO
								// E...
								System.out
										.println("Insere na DISPOSITIVO e SIMCARDDISPOSITIVO");
								dao.simCardInsereDispESimCard(
										gate.getDispositivo(),
										gate.getSimcard(),
										gate.getTecnologia(),
										gate.getApnConfigurada(), gate.getIp(),
										gate.getPorta(), gate.getFonte(),
										gate.getImei(), nomeArq.getNome(),
										CodProc, login, horaAtual);

								// ...FAZ UPDATE
								System.out.println("Faz UPDATE");
								dao.simCardDispUpdateA(gate.getDispositivo(),
										gate.getSimcard(),
										gate.getTecnologia(),
										gate.getApnConfigurada(), gate.getIp(),
										gate.getPorta(), gate.getFonte(),
										gate.getImei(), nomeArq.getNome(),
										CodProc, login, horaAtual);
								QtdeAlt++;

							} else {

								// GRAVA HISTORICO
								System.out.println("Grava na Histórico");
								dao.HistoricoGATE(gate.getSimcard(),
										gate.getDispositivo(), gate.getFonte(),
										nuLinhaAtual, nomeArq.getNome(),
										CodProc, login);

								// FAZ UPDATE
								System.out.println("Faz UPDATE");
								dao.simCardDispUpdateA(gate.getDispositivo(),
										gate.getSimcard(),
										gate.getTecnologia(),
										gate.getApnConfigurada(), gate.getIp(),
										gate.getPorta(), gate.getFonte(),
										gate.getImei(), nomeArq.getNome(),
										CodProc, login, horaAtual);
								QtdeAlt++;

							}
						}
					} else {
						System.out.println("Chama Próximo");
						dao.QtdeAlterada(QtdeAlt);
						dao.QtdeErro(QtdeErro);
					}
				}
				dao.QtdeAlterada(QtdeAlt);
				dao.QtdeErro(QtdeErro);
			}
		}
	}

	private Gate carregarLinha(int nuLinhaAtual) {
		ValoresPlanilhaEnum planilhaEnum = null;
		Gate linhaGate = new Gate();
		Cell[] celulas = sheet.getRow(nuLinhaAtual);

		for (int nuCelulaAtual = 0; nuCelulaAtual < celulas.length; nuCelulaAtual++) {
			Cell celula = celulas[nuCelulaAtual];
			GateCelulasEnum celulaGate = GateCelulasEnum
					.obterCelulaGate(nuCelulaAtual);

			switch (celulaGate) {
			case SIMCARD:
				linhaGate.setSimcard(celula.getContents());
				break;
			case DISPOSITIVO:
				linhaGate.setDispositivo(celula.getContents());
				break;
			case TECNOLOGIA:
				planilhaEnum = ValoresPlanilhaEnum.obtervALORPorDesc(celula
						.getContents());
				linhaGate.setTecnologia(planilhaEnum.getCodigo());
				break;
			case APN_CONFIGURADA:
				planilhaEnum = ValoresPlanilhaEnum.obtervALORPorDesc(celula
						.getContents());
				linhaGate.setApnConfigurada(planilhaEnum.getCodigo());
				break;
			case IP:
				linhaGate.setIp(celula.getContents());
				break;
			case PORTA:
				linhaGate.setPorta(celula.getContents());
				break;
			case FONTE:
				planilhaEnum = ValoresPlanilhaEnum.obtervALORPorDesc(celula
						.getContents());
				linhaGate.setFonte(planilhaEnum.getCodigo());
				break;
			case IMEI:
				linhaGate.setImei(celula.getContents());
				break;
			}
		}

		return linhaGate;
	}

}

ERRO:

java.lang.NullPointerException
	at br.com.simcard.VerificarRegistroGate.carregarLinha(VerificarRegistroGate.java:349)
	at br.com.simcard.VerificarRegistroGate.VerificadorGate(VerificarRegistroGate.java:89)
	at br.com.simcard.VerificarRegistroGate.<init>(VerificarRegistroGate.java:59)
	at br.com.simcard.Upload.anexos(Upload.java:34)
	at servlet.br.com.simcard.ServletUpload.doPost(ServletUpload.java:76)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

Cara, NullPointer sempre é alguma bobeada q a gente dá… melhor jeito de vc ver isso é mandar um Debug na linha 349 e ver quando que isso está estourando…ai vc pode ver quem ta nulo, e tentar ver onde deixou passar.

[quote=Pacato]Pessoal,

Estou com um problema de null pointer, só que não sei o pq… não sei se é por causa da quantidade de registros… pois com menos ele roda…

package br.com.simcard;

import java.io.File;
import java.io.IOException;
import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import br.com.simcard.dao.PlanilhaGateDAO;

public class VerificarRegistroGate {
	private static final int LINHA_INICIAL = 1;
	private Workbook workbook;
	private Sheet sheet;

	public Date transformaData(String data) {
		Date retorno = null;
		SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy");
		try {
			retorno = formatador.parse(data);
		} catch (ParseException ex) {
			throw new RuntimeException(ex);
		}

		return retorno;
	}

	// CONTADOR DE REGISTROS
	public int NumRegistros() {
		int numReg = 0;
		int soma = 0;
		int linhas = sheet.getRows();
		int pastas = workbook.getNumberOfSheets();

		for (int i = 0; i < pastas; i++) {
			this.sheet = workbook.getSheet(i);
			linhas = sheet.getRows();

			for (int j = LINHA_INICIAL; j < linhas; j++) {
				soma = (linhas + numReg) - 1;
			}
			numReg = soma;
			System.out.println(numReg);
		}
		return numReg;
	}

	public VerificarRegistroGate(File vr, String login) throws Exception,
			IOException, BiffException, ClassNotFoundException, SQLException {
		this.workbook = Workbook.getWorkbook(vr);
		this.sheet = workbook.getSheet(0);

		VerificadorGate(vr, login);
	}

	public void VerificadorGate(File vr, String login) {

		int nuLinhas = sheet.getRows();
		PlanilhaGateDAO dao = new PlanilhaGateDAO();
		NomeArquivo nomeArq = new NomeArquivo();
		nomeArq.setNome(vr.toString());
		Calendar horaAtual = Calendar.getInstance();
		horaAtual.set(Calendar.MILLISECOND, 0);
		int QtdeErro = 0;
		int QtdeAlt = 0;
		int CodProc = 0;

		// CONTA NÚMERO DE REGISTROS
		nuLinhas = NumRegistros();

		// INSERE PROCESSAMENTO
		dao.insereProcessamento(21, (nuLinhas), login, nomeArq.getNome(),
				horaAtual);
		CodProc = dao.CodigoProcessamento();

		for (int i = 0; i < workbook.getNumberOfSheets(); i++) {
			this.sheet = workbook.getSheet(i);
			nuLinhas = sheet.getRows();
			System.out.println("Sheet: " + i);
			for (int nuLinhaAtual = LINHA_INICIAL; nuLinhaAtual < nuLinhas; nuLinhaAtual++) {
				Gate gate = carregarLinha(nuLinhaAtual);

				// VERIFICA SE PLANILHA É VAZIA
				if (gate.getDispositivo().equals("")
						|| gate.getDispositivo().equals(null)) {
					System.out.println("Campo Vazio");
					dao.InsereLogErro(0, "0", nuLinhaAtual, CodProc);
					QtdeErro++;
					dao.QtdeErro(QtdeErro);
					continue;
				}

				// VERIFICA SE O DISPOSITIVO EXISTE
				if (!dao.existeDispositivo(gate.getDispositivo())) {

					// VERIFICA SE O SIMCARD É NULO OU VAZIO
					if (gate.getSimcard().equals(null)
							|| gate.getSimcard().equals("")) {

						// SE FOR...SÓ INSERE NA TB DISPOSITIVO
						System.out.println("Chama insert só na Dispositivo");
						dao.simCardInsereDisp(gate.getDispositivo(),
								gate.getSimcard(), gate.getTecnologia(),
								gate.getApnConfigurada(), gate.getIp(),
								gate.getPorta(), gate.getFonte(),
								gate.getImei(), nomeArq.getNome(), CodProc,
								login, horaAtual);
						QtdeAlt++;

					} else {
						// VERIFICA SE O DISPOSITIVO EXISTE NA TB DISPOSITIVO
						// E O SIMCARD EXISTE NA TABELA DA TELECOM
						if (!dao.existeDispositivo(gate.getDispositivo())
								&& dao.existeSimCard(gate.getSimcard())) {

							// SE NÃO EXISTE DISP E EXISTE SIMCARD...
							// INSERE NA DISPOSITIVO E SIMCARD_DISPOSITIVO
							System.out
									.println("Chama insert na Dispositivo e na SIMCardDsipositivo");
							dao.simCardInsereDispESimCard(
									gate.getDispositivo(), gate.getSimcard(),
									gate.getTecnologia(),
									gate.getApnConfigurada(), gate.getIp(),
									gate.getPorta(), gate.getFonte(),
									gate.getImei(), nomeArq.getNome(), CodProc,
									login, horaAtual);
							QtdeAlt++;

						} else {
							// FAZER O INSERT NA SIMCARD (TELECOM)...DEPOIS...
							System.out.println("Insere na SIMCARD TELECOM");
							dao.simCardInsereTelecom(gate.getSimcard(),
									gate.getFonte(), nomeArq.getNome(),
									CodProc, login, horaAtual);

							// ...INSERE NA DISPOSITIVO E SIMCARD_DISPOSITIVO
							// E...
							System.out
									.println("Insere na DISPOSITIVO e SIMCARDDISPOSITIVO");
							dao.simCardInsereDispESimCard(
									gate.getDispositivo(), gate.getSimcard(),
									gate.getTecnologia(),
									gate.getApnConfigurada(), gate.getIp(),
									gate.getPorta(), gate.getFonte(),
									gate.getImei(), nomeArq.getNome(), CodProc,
									login, horaAtual);
							QtdeAlt++;

							// ...GRAVA NA LOG ERRO COM O CÓDIGO 28
							System.out
									.println("Grava na LOG ERRO - COD 28 NÃO TINHA (FOI INSERIDO) REGISTRO NA TB SIMCARD TELECOM");
							dao.InsereLogErro(28, gate.getSimcard(),
									nuLinhaAtual, CodProc);
							QtdeErro++;
						}
					}

					// DISPOSITIVO EXISTE

				} else {
					// VERIFICA SE PRECISA DE UPDATE
					if (!dao.simCardVerificaUpdateGate(gate.getDispositivo(),
							gate.getSimcard(), gate.getTecnologia(),
							gate.getApnConfigurada(), gate.getIp(),
							gate.getPorta(), gate.getFonte(), gate.getImei(),
							nuLinhaAtual, nomeArq.getNome(), CodProc, login,
							horaAtual)) {

						if ((gate.getSimcard() == null)
								|| (gate.getSimcard() == "")) {
							// GRAVA HISTORICO
							System.out.println("Grava na Histórico");
							dao.HistoricoGATE(gate.getSimcard(),
									gate.getDispositivo(), gate.getFonte(),
									nuLinhaAtual, nomeArq.getNome(), CodProc,
									login);

							// FAZ UPDATE
							System.out.println("Faz UPDATE");
							dao.simCardDispUpdateA(gate.getDispositivo(),
									gate.getSimcard(), gate.getTecnologia(),
									gate.getApnConfigurada(), gate.getIp(),
									gate.getPorta(), gate.getFonte(),
									gate.getImei(), nomeArq.getNome(), CodProc,
									login, horaAtual);

							QtdeAlt++;
							continue;
						}

						// VERIFICA SE PRECISA INSERIR O SIMCARD NA TELECOM PARA
						// A
						// REGRA DO GATEWAY
						if (!dao.existeSimCard(gate.getSimcard())) {
							System.out
									.println("Insere na SIMCARD TELECOM para realizar o update COM ERRO 28 GRAVADO NA LOG ERRO");
							dao.simCardInsereTelecom(gate.getSimcard(),
									gate.getFonte(), nomeArq.getNome(),
									CodProc, login, horaAtual);

							// GRAVA NA LOG ERRO COM O CÓDIGO 28
							dao.InsereLogErro(28, gate.getSimcard(),
									nuLinhaAtual, CodProc);
							QtdeErro++;

							if (!dao.existeDispositivoESimCard(gate
									.getDispositivo())) {

								// GRAVA HISTORICO
								System.out.println("Grava na Histórico");
								dao.HistoricoGATE(null, gate.getDispositivo(),
										gate.getFonte(), nuLinhaAtual,
										nomeArq.getNome(), CodProc, login);

								// ... INSERE NA DISPOSITIVO E
								// SIMCARD_DISPOSITIVO
								// E...
								System.out
										.println("Insere na DISPOSITIVO e SIMCARDDISPOSITIVO");
								dao.simCardInsereDispESimCard(
										gate.getDispositivo(),
										gate.getSimcard(),
										gate.getTecnologia(),
										gate.getApnConfigurada(), gate.getIp(),
										gate.getPorta(), gate.getFonte(),
										gate.getImei(), nomeArq.getNome(),
										CodProc, login, horaAtual);

								// ...FAZ UPDATE
								System.out.println("Faz UPDATE");
								dao.simCardDispUpdateA(gate.getDispositivo(),
										gate.getSimcard(),
										gate.getTecnologia(),
										gate.getApnConfigurada(), gate.getIp(),
										gate.getPorta(), gate.getFonte(),
										gate.getImei(), nomeArq.getNome(),
										CodProc, login, horaAtual);
								QtdeAlt++;

							} else {

								// GRAVA HISTORICO
								System.out.println("Grava na Histórico");
								dao.HistoricoGATE(gate.getSimcard(),
										gate.getDispositivo(), gate.getFonte(),
										nuLinhaAtual, nomeArq.getNome(),
										CodProc, login);

								// FAZ UPDATE
								System.out.println("Faz UPDATE");
								dao.simCardDispUpdateA(gate.getDispositivo(),
										gate.getSimcard(),
										gate.getTecnologia(),
										gate.getApnConfigurada(), gate.getIp(),
										gate.getPorta(), gate.getFonte(),
										gate.getImei(), nomeArq.getNome(),
										CodProc, login, horaAtual);
								QtdeAlt++;

							}

						} else {
							if (!dao.existeDispositivoESimCard(gate
									.getDispositivo())) {

								// GRAVA HISTORICO
								System.out.println("Grava na Histórico");
								dao.HistoricoGATE(null, gate.getDispositivo(),
										gate.getFonte(), nuLinhaAtual,
										nomeArq.getNome(), CodProc, login);

								// ... INSERE NA DISPOSITIVO E
								// SIMCARD_DISPOSITIVO
								// E...
								System.out
										.println("Insere na DISPOSITIVO e SIMCARDDISPOSITIVO");
								dao.simCardInsereDispESimCard(
										gate.getDispositivo(),
										gate.getSimcard(),
										gate.getTecnologia(),
										gate.getApnConfigurada(), gate.getIp(),
										gate.getPorta(), gate.getFonte(),
										gate.getImei(), nomeArq.getNome(),
										CodProc, login, horaAtual);

								// ...FAZ UPDATE
								System.out.println("Faz UPDATE");
								dao.simCardDispUpdateA(gate.getDispositivo(),
										gate.getSimcard(),
										gate.getTecnologia(),
										gate.getApnConfigurada(), gate.getIp(),
										gate.getPorta(), gate.getFonte(),
										gate.getImei(), nomeArq.getNome(),
										CodProc, login, horaAtual);
								QtdeAlt++;

							} else {

								// GRAVA HISTORICO
								System.out.println("Grava na Histórico");
								dao.HistoricoGATE(gate.getSimcard(),
										gate.getDispositivo(), gate.getFonte(),
										nuLinhaAtual, nomeArq.getNome(),
										CodProc, login);

								// FAZ UPDATE
								System.out.println("Faz UPDATE");
								dao.simCardDispUpdateA(gate.getDispositivo(),
										gate.getSimcard(),
										gate.getTecnologia(),
										gate.getApnConfigurada(), gate.getIp(),
										gate.getPorta(), gate.getFonte(),
										gate.getImei(), nomeArq.getNome(),
										CodProc, login, horaAtual);
								QtdeAlt++;

							}
						}
					} else {
						System.out.println("Chama Próximo");
						dao.QtdeAlterada(QtdeAlt);
						dao.QtdeErro(QtdeErro);
					}
				}
				dao.QtdeAlterada(QtdeAlt);
				dao.QtdeErro(QtdeErro);
			}
		}
	}

	private Gate carregarLinha(int nuLinhaAtual) {
		ValoresPlanilhaEnum planilhaEnum = null;
		Gate linhaGate = new Gate();
		Cell[] celulas = sheet.getRow(nuLinhaAtual);

		for (int nuCelulaAtual = 0; nuCelulaAtual < celulas.length; nuCelulaAtual++) {
			Cell celula = celulas[nuCelulaAtual];
			GateCelulasEnum celulaGate = GateCelulasEnum
					.obterCelulaGate(nuCelulaAtual);

			switch (celulaGate) {
			case SIMCARD:
				linhaGate.setSimcard(celula.getContents());
				break;
			case DISPOSITIVO:
				linhaGate.setDispositivo(celula.getContents());
				break;
			case TECNOLOGIA:
				planilhaEnum = ValoresPlanilhaEnum.obtervALORPorDesc(celula
						.getContents());
				linhaGate.setTecnologia(planilhaEnum.getCodigo());
				break;
			case APN_CONFIGURADA:
				planilhaEnum = ValoresPlanilhaEnum.obtervALORPorDesc(celula
						.getContents());
				linhaGate.setApnConfigurada(planilhaEnum.getCodigo());
				break;
			case IP:
				linhaGate.setIp(celula.getContents());
				break;
			case PORTA:
				linhaGate.setPorta(celula.getContents());
				break;
			case FONTE:
				planilhaEnum = ValoresPlanilhaEnum.obtervALORPorDesc(celula
						.getContents());
				linhaGate.setFonte(planilhaEnum.getCodigo());
				break;
			case IMEI:
				linhaGate.setImei(celula.getContents());
				break;
			}
		}

		return linhaGate;
	}

}

ERRO:

java.lang.NullPointerException at br.com.simcard.VerificarRegistroGate.carregarLinha(VerificarRegistroGate.java:349) at br.com.simcard.VerificarRegistroGate.VerificadorGate(VerificarRegistroGate.java:89) at br.com.simcard.VerificarRegistroGate.<init>(VerificarRegistroGate.java:59) at br.com.simcard.Upload.anexos(Upload.java:34) at servlet.br.com.simcard.ServletUpload.doPost(ServletUpload.java:76) at javax.servlet.http.HttpServlet.service(HttpServlet.java:641) at javax.servlet.http.HttpServlet.service(HttpServlet.java:722) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) [/quote]

Este erro ocorre quando você tenta utilizar um objeto não instânciado.

Debug a partit da linha:
at br.com.simcard.VerificarRegistroGate.carregarLinha(VerificarRegistroGate.java:349)

ola pessoal…

to achano que não é no código…pois quando abro em outra planilha, salvando os mesmos dados da que estou tentando abrir, ele abre normalmente… ele vem null na

switch (celulaGate) {

não sei se é o formato do excel…