Tôi đang gặp sự cố khi xuất dữ liệu của mình sang excel, điều này là do một số mã mà các nhà phát triển khác trong nhóm của tôi đã thực hiện. Vì vậy, vấn đề chính là xuất dữ liệu sang Excel hoặc .cvs bằng cách sử dụng trang JSP nhưng không sử dụng bất kỳ mã HTML nào. Bất kỳ đề xuất nào cũng sẽ giúp tôi khám phá trong lĩnh vực đang phát triển của mình. Cảm ơn những nỗ lực của bạn.Trang JSP không có mã HTML để xuất dữ liệu sang trang tính Excel
Trả lời
Sử dụng tốt hơn Servlet cho việc này. Mã Java thô không thuộc về tệp JSP, chỉ đơn giản là công thức cho maintenance trouble.
Để bắt đầu, tạo ra một lớp tiện ích Java đơn giản mà mất ví dụ như một List<List<T>>
hoặc một List<Data>
(trong đó Data
đại diện cho một hàng) thể hiện nội dung CSV và một OutputStream
như các đối số phương pháp và viết logic mà hiện các dữ liệu sao chép nhiệm vụ.
Khi bạn làm việc đó, hãy tạo lớp Servlet lấy một số định danh tệp CSV làm tham số yêu cầu hoặc pathinfo (Tôi khuyên bạn nên sử dụng pathinfo như một trình duyệt web nhất định được phát triển bởi một nhóm trong Redmond sẽ không phát hiện được tên tệp/mimetype nếu không), sử dụng số nhận dạng để nhận được List<List<T>>
hoặc List<Data>
từ đâu đó và ghi nó vào số OutputStream
của số HttpServletResponse
cùng một bộ tiêu đề phản hồi chính xác.
Dưới đây là một kickoff ví dụ cơ bản:
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();
}
Dưới đây là một ví dụ làm thế nào bạn có thể sử dụng nó:
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);
}
Và bên trong một Servlet về cơ bản bạn có thể làm:
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());
}
Bản đồ servlet này trên một cái gì đó như /csv/*
và gọi nó là một cái gì đó như http://example.com/context/csv/filename.csv
. Đó là cơ bản tất cả. Tên tệp trong pathinfo rất quan trọng vì một trình duyệt web nhất định được phát triển bởi một nhóm ở Redmond bỏ qua phần filename
của tiêu đề Content-Disposition
và sử dụng phần đường dẫn cuối cùng của URL thay thế.
- 1. Làm cách nào để xuất JasperReport sang tệp Excel có nhiều trang tính?
- 2. Lấy tên của trang tính Excel có chứa mã
- 3. Xuất dữ liệu ASP.Net sang Excel
- 4. Xuất dữ liệu từ DBGrid sang Excel
- 5. Cách xuất tất cả các bảng từ Cơ sở dữ liệu Access sang Excel - Trang tính cho mỗi bảng
- 6. Xuất sang XML từ trang dữ liệu động
- 7. Xuất Bảng HTML sang Excel bằng ASP.NET
- 8. Xuất dữ liệu truy vấn SQL sang Excel
- 9. Xuất dữ liệu không chuẩn hóa từ excel sang xml
- 10. biến từ .jsp đến trang html
- 11. JavaScript - xuất dữ liệu bảng HTML vào Excel
- 12. Dữ liệu SilverlightGrid: Xuất sang excel hoặc csv
- 13. Vấn đề với việc sử dụng OleDbDataAdapter để lấy dữ liệu từ một trang tính Excel
- 14. Nhập dữ liệu từ Excel bằng SSIS mà không biết tên trang tính
- 15. Thủ tục lưu sẵn SQL Server xuất sang sổ làm việc Excel với nhiều trang
- 16. Hàm Excel để tạo các truy vấn giống SQL trên dữ liệu trang tính?
- 17. Đặt mã Excel-VBA vào mô-đun hoặc trang tính?
- 18. Làm cách nào để sao chép các cột từ trang tính này sang trang tính khác bằng VBA trong Excel?
- 19. Nhập dữ liệu bảng tính Excel vào một bảng tính Excel khác có chứa VBA
- 20. Xuất tệp cơ sở dữ liệu sqlite sang XML và sau đó vào bảng tính Excel
- 21. Xuất một trang php sang pdf
- 22. Xuất ASPX sang HTML
- 23. Nguồn cấp dữ liệu được hiển thị trên các trang jsp thông qua htmltidy
- 24. JSP tạo bảng tính Excel (XLS) để tải xuống
- 25. Xuất từ PHP sang Excel
- 26. Làm cách nào để xuất dữ liệu sang Excel bằng LINQ to Entity?
- 27. xuất dữ liệu từ excel sang cơ sở dữ liệu sqlite
- 28. Trích xuất dữ liệu với Excel
- 29. Tham khảo các trang tính Excel động
- 30. Xuất Bảng HTML sang Excel từ ASP.NET MVC
chắc chắn là một công việc cho một servlet. +1 – ChadNC
Tôi đã thử một giải pháp tương tự như vậy nhưng tôi gặp sự cố khi tải tệp qua https. Tại sao nó không thể thông qua https ?. –
Sự cố nằm ở một nơi khác. Hãy đặt câu hỏi của riêng bạn bằng cách nhấn nút 'Đặt câu hỏi' ở phía trên bên phải và giải thích chi tiết vấn đề. – BalusC