Tengo un problema al exportar mis datos a la hoja de Excel, esto se debe a algún código que otros desarrolladores de mi equipo crearon. Entonces, el principal problema es exportar los datos a Excel o .cvs usando la página JSP pero sin usar ningún código HTML. Cualquier sugerencia también me ayudaría a explorar en mi arena en desarrollo. Gracias por tus esfuerzos.Página JSP sin código HTML para exportar datos a la hoja de Excel
Respuesta
Mejor use un servlet para esto. El código de Java sin procesar no pertenece a un archivo JSP, simplemente es una receta para maintenance trouble.
Para empezar, cree una sencilla clase de utilidad de Java que tiene por ejemplo un List<List<T>>
o una List<Data>
(en la que Data
representa una fila) que representa el contenido de CSV y un OutputStream
como argumentos de métodos y escribir lógica que hace los datos de la copia de la tarea.
Una vez que funcione, cree una clase Servlet que tome algún identificador de archivo CSV como parámetro de solicitud o pathinfo (Recomiendo usar pathinfo como un determinado explorador web desarrollado por un equipo en Redmond fallaría en la detección de nombre de archivo/mimetipo), usa el identificador para obtener el List<List<T>>
o List<Data>
desde algún lugar y lo escribe en el OutputStream
del HttpServletResponse
a lo largo de un conjunto de encabezados de respuesta correctos.
Aquí está un ejemplo puntapié inicial básica:
public static <T> void writeCsv (List<List<T>> csv, char separator, OutputStream output) throws IOException {
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(output, "UTF-8"));
for (List<T> row : csv) {
for (Iterator<T> iter = row.iterator(); iter.hasNext();) {
String field = String.valueOf(iter.next()).replace("\"", "\"\"");
if (field.indexOf(separator) > -1 || field.indexOf('"') > -1) {
field = '"' + field + '"';
}
writer.append(field);
if (iter.hasNext()) {
writer.append(separator);
}
}
writer.newLine();
}
writer.flush();
}
He aquí un ejemplo de cómo se podría utilizar:
public static void main(String[] args) throws IOException {
List<List<String>> csv = new ArrayList<List<String>>();
csv.add(Arrays.asList("field1", "field2", "field3"));
csv.add(Arrays.asList("field1,", "field2", "fie\"ld3"));
csv.add(Arrays.asList("\"field1\"", ",field2,", ",\",\",\""));
writeCsv(csv, ';', System.out);
}
Y dentro de un servlet básicamente se puede hacer:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String filename = request.getPathInfo();
List<List<Object>> csv = someDAO().list();
response.setHeader("content-type", "text/csv");
response.setHeader("content-disposition", "attachment;filename=\"" + filename + "\"");
writeCsv(csv, ',', response.getOutputStream());
}
Mapa este servlet en algo como /csv/*
e invocarlo como algo así como http://example.com/context/csv/filename.csv
. Eso es básicamente todo. El nombre de archivo en pathinfo es importante porque un navegador web desarrollado por un equipo de Redmond ignora la parte filename
del encabezado Content-Disposition
y utiliza la última parte de la ruta de la URL en su lugar.
- 1. Exportar tabla HTML a Excel
- 2. Exportar datos de consulta SQL a Excel
- 3. Exportar tabla HTML a excel - usando jQuery o Java
- 4. Exportar tabla HTML a Excel utilizando ASP.NET
- 5. variable de .jsp a la página html
- 6. ASP.Net Exportar datos a Excel
- 7. Exportar de PHP a Excel
- 8. Exportar datos de SQLite a Excel en iOS programáticamente
- 9. JSP que genera hoja de cálculo de Excel (XLS) para descargar
- 10. Exportar a Excel C#
- 11. datagridview exportar a excel
- 12. Exportar tabla HTML a Excel caracteres especiales de JavaScript cambiaron
- 13. Cómo exportar los datos de hoja de cálculo Excel a SQL Server 2008 tabla
- 14. Exportar a Excel en Asp.net MVC
- 15. Exportar SQL a Excel
- 16. Exportar a Excel desde un repetidor?
- 17. Exportar ASPX a HTML
- 18. Conversión de tabla HTML a hoja de Excel utilizando C#
- 19. Exportar archivo de base de datos sqlite a XML y luego a la hoja de cálculo de Excel
- 20. Redactando datos a SQL desde la hoja de Excel
- 21. Exportación de SSRS a Excel sin encabezados
- 22. Cómo exportar todas las tablas de una Base de datos de Access a Excel - Una hoja para cada tabla
- 23. Exportar a Excel desde Crystal Reports sin encabezados/pies de página
- 24. php + jqgrid + exportar a excel
- 25. Exportar código fuente de la aplicación ASP.NET MVC para PhoneGap
- 26. Exportar cada hoja a un archivo csv diferente
- 27. C# (WinForms-App) exportar DataSet a Excel
- 28. Cómo exportar datos a Excel usando LINQ to Entity?
- 29. Exportar a excel en TFS 2012, código de error: TF400422
- 30. jQuery DataTables: exportar columnas individuales a Excel
Definitivamente un trabajo para un servlet. +1 – ChadNC
Intenté una solución similar a esta, pero tuve problemas para obtener el archivo a través de https. ¿Por qué no puede pasar por https ?. –
El problema está en otro lado. Haga su propia pregunta presionando el botón 'Ask Question' en la parte superior derecha y elabore el problema en detalle. – BalusC