Fala Galera…
Estou tendo problema em exportar um relatório utilizando o response.setContentType(“application/vnd.ms-excel”);
Tenho alguns campos do tipo string, porém são númericos, por exemplo, gravo um numero de nota fiscal, sendo 000300. A planilha salva apenas 300.
Obrigado.
Creio que o excel ignora os zeros à esquerda, se você quer mantê-los, digita um apóstrofo antes.
Eu fiz isso colocando na minha jsp, porém ele exibiu com o apóstrofo. '000300.
|
O apóstrofo tem que ser colocado somente na planilha do excel, não no seu JSP
Como?
Quando o arquivo salva, já está sem os 0 iniciais.
Ele exibe em tela corretamente, o problema é quando exporta para o excel.
Posta o código que exporta para o excel.
Nesse código você vai concatenar o apóstrofo no conteúdo das células que devem apresentar o zero à esquerda.
SERVLET
String sql = “WHERE ano =’” + ano + “’ and mes =’” + mes + “’”;
MovimentoDao m = new MovimentoJdbc();
List<MovimentoBean> MovimentoArray = m.ListaCompleta(sql);
if (MovimentoArray.size() > 0) {
request.setAttribute("fiscal", MovimentoArray);
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment; filename=movimento_fiscal.xls");
view = request.getRequestDispatcher("listagem_movimento.jsp");
view.forward(request, response);
} else {
view = request.getRequestDispatcher("lista_erro.jsp");
view.forward(request, response);
}
MINHA JSP
<%@page import=“br.com.lifemed.bean.MovimentoBean”%>
<%@page contentType=“text/html” pageEncoding=“UTF-8”%>
<%@taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>
<title>Movimento Fiscal - Entrada e Saída</title>
</head>
<body>
<%@include file="sessao.jsp" %>
<c:if test="${not empty info}">
<script type="text/javascript">alert("${info}" + "\n" + "${info2}")</script>
</c:if>
<fieldset>
<legend>Faturamento Analitico</legend>
<img src="imagens/excel.png" width="40px" height="40px" id="btnExport" title="Exportar para Excel"/>
<div id="dvData">
<table id="tabela" class="xy">
<thead>
<tr>
<th>tp_mov</th>
<th>filial</th>
<th>ano</th>
<th>mes</th>
<th>notafiscal</th>
<th>tes</th>
</tr>
</thead>
<tbody>
<c:forEach items="${fiscal}" var="xxx">
<tr>
<td><c:out value="${xxx.tp_mov}"/></td>
<td><c:out value="${xxx.d2_filial}"/></td>
<td><c:out value="${xxx.ano}"/></td>
<td><c:out value="${xxx.mes}"/></td>
<td><c:out value="${xxx.notafiscal}"/></td>
<td><c:out value="${xxx.tes}"/></td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
<script type="text/javascript" >
$('#btnExport').click(function () {
$('.xy').table2excel({
exclude: ".noExl",
name: "movimento_fiscal",
filename: "movimento_fiscal"
});
});
</script>
</body>
E cadê o código onde você preenche o conteúdo do arquivo movimento_fiscal.xls?
Pelo que entendi ele monta de acordo com a jsp. Ele está certo gera o excel exatamente conforme a tabela em html, o único problema é o 0.
Quando exibe a lista na tela (JSP) Aparece com os 000 iniciais, o problema é no excel ele já vai sem.
O código que gera seu excel é JavaScript e não Java.
Provavelmente você tem algum arquivo de template chamado movimento_fiscal edita esse arquivo e configura sua coluna para ser do tipo texto e não numérica.
Tenho duas formas de gerar esse excel, uma deles é exibindo na tela e clicando nessa função java script.
A outra forma, é enviando diretamente pelo metodo Post do Servlet, onde ele não abre a minha jsp e faz o download direto, apenas pelas linhas do códigos abaixo, inclusive comentando o meu código javascript.
response.setContentType(“application/vnd.ms-excel”);
response.setHeader(“Content-Disposition”, “attachment; filename=movimento_fiscal.xls”);
Galera
Mudei a forma de exportar para excel com o apache poi.
Valeu
1 curtida