public class ExcelWriter extends HttpServlet{
private void writeExcel(List<Book> listBook, String excelFilePath)
throws IOException {
Workbook workbook = getWorkbook(excelFilePath);
Sheet sheet = workbook.createSheet();
int rowCount = 0;
for (Book aBook : listBook) {
Row row = sheet.createRow(++rowCount);
writeBook(aBook, row);
}
try (FileOutputStream outputStream = new FileOutputStream(new File(
excelFilePath))) {
workbook.write(outputStream);
}
}
private void writeBook(Book aBook, Row row) {
Cell cell = row.createCell(1);
cell.setCellValue(aBook.getTitle());
cell = row.createCell(2);
cell.setCellValue(aBook.getAuthor());
cell = row.createCell(3);
cell.setCellValue(aBook.getPrice());
}
private List<Book> getListBook() {
Book book1 = new Book("Head Java", "Anot Serria", 79);
Book book2 = new Book("Effective Java 1", "Bnot Bloch", 36);
Book book3 = new Book("Clean Code 1", "Cnot Martin", 42);
Book book4 = new Book("Thinking in Java 2", "D Eckel", 35);
List<Book> listBook = Arrays.asList(book1, book2, book3, book4);
return listBook;
}
private Workbook getWorkbook(String excelFilePath) throws IOException {
Workbook workbook = null;
if (excelFilePath.endsWith("xlsx")) {
workbook = new XSSFWorkbook();
} else if (excelFilePath.endsWith("xls")) {
workbook = new HSSFWorkbook();
} else {
throw new IllegalArgumentException(
"The specified file is not Excel file");
}
return workbook;
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
ExcelWriter excelWriter = new ExcelWriter();
List<Book> listBook = excelWriter.getListBook();
String excelFilePath = "C:\\ExcelTemp\\Temp.xls";
excelWriter.writeExcel(listBook, excelFilePath);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
После загрузки файла Excel сервлет должен указать мне на начальную страницу просмотра, т.е. откуда я экспортирую данные.Я не хочу пересылать его на ту же страницу.
Функциональность должна быть такой, как если бы я экспортировал данные из индекса. html-->ExcelWriter Servlet
.Но URL не должен показывать часть сервлета.Пожалуйста, помогите мне с этим.Я использую Apache POI и Servlet.У меня также есть книга имен POJO с методами получения и установки.