Pessoal,
Estou lendo uma planilha Excel XLSX com o POI (XSSF) e gravando um arquivo sequencial.
O problema é o tempo de execução…
Estou lendo uma planilha com 80.000 (oitenta mil) linhas e gravando um arquivo TXT com as 7 colunas da planilha.
Tudo bem, sei que a planilha é grande, mas está demorando mais de 1 hora e meia. O pior é que não termina, acaba com o erro abaixo:
type Status report
message HTTP method GET is not supported by this URL
description The specified HTTP method is not allowed for the requested resource.
Já testei o servlet com uma planilha pequena e funcionou perfeitamente.
A API Jakarta POI tem problema de performance?
Alguém pode me dar uma ajuda?
O código do servlet é este:
DESCULPEM, NÃO SEI USER O EDITOR DO FÓRUM
import <a href="http://java.io">java.io</a>.<em>;
import java.util.</em>;
import javax.servlet.<em>;
import javax.servlet.http.</em>;
import java.sql.<em>;
import javax.sql.</em>;
import java.lang.<em>;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import controleCtrlFin.</em>;
public class BZTE00110 extends HttpServlet
{
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
Diretorio diretorio = new Diretorio();
String dirServlet = diretorio.DiretorioServletServlet();
String dirJsp = diretorio.DiretorioServletJsp();
String dirUpload = diretorio.DiretorioUpload();
String dirBZTE = diretorio.DiretorioBZTE();
HttpSession sessao = request.getSession(true);
String sessaoID = (String)sessao.getId();
String controle = (String)request.getAttribute("controle");if (controle == null) controle = "";
try
{
if (controle.equals(""))
{
request.setAttribute("tabAA",tabAA);
request.getRequestDispatcher(dirJsp + "BZTE00110.jsp").forward(request, response);
return;
}
else if (controle.equals("CAPTURAR"))
{
String caminhoArquivo = (String)request.getAttribute("caminhoArquivo");
SimpleDateFormat DataHoraFormat = new SimpleDateFormat("yyyyMMddhhmmss");
String DataHora = DataHoraFormat.format(new java.util.Date());
String nomeBackup = "Backup_Dados_Modulos_" + DataHora + ".sql";
File dirBackup = new File(dirUpload + nomeBackup);
FileWriter arquivoSaida = new FileWriter(dirBackup);
PrintWriter saida = new PrintWriter(arquivoSaida);
int ind1 = 0;
String celula [] = new String [8];
String depto = "";
String modulo = "";
String linguagem = "";
String tipo = "";
String descricao = "";
FileInputStream arquivo = new FileInputStream(caminhoArquivo);
XSSFWorkbook planilha = new XSSFWorkbook(arquivo);
XSSFSheet sheet = planilha.getSheetAt(0);
Iterator contaLinhas = sheet.rowIterator();
while (contaLinhas.hasNext())
{
XSSFRow linha=(XSSFRow) contaLinhas.next();
celula [1] = String.valueOf(linha.getCell(0));
celula [2] = String.valueOf(linha.getCell(1));
celula [3] = String.valueOf(linha.getCell(2));
celula [4] = String.valueOf(linha.getCell(3));
celula [5] = String.valueOf(linha.getCell(4));
celula [6] = String.valueOf(linha.getCell(5));
celula [7] = String.valueOf(linha.getCell(6));
depto = celula [1];
modulo = celula [2];
if (celula[4].equals("AS"))
{
linguagem = "ASSEMBLER";
}
else
{
linguagem = "?????????????";
}
descricao = celula [5];
if (celula[7].equals("XREFON"))
{
tipo = "ONLINE";
}
else
{
tipo = "?????????????";
}
linhaSaida = "('" + modulo + "','" + linguagem + "','" + tipo + "','" + descricao + "','" + depto + "')";
saida.println(linhaSaida);
}
}
saida.close();
arquivoSaida.close();
request.getRequestDispatcher(dirJsp + "BZTE00110.jsp").forward(request, response);
return;
}
}