The core code is as follows:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import cn.com.vo.UserVO;
public class DownloadServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("application/vnd.ms-excel"); //Change to output excel file
resp.setHeader("Content-disposition","attachment; filename=file.xls" );
OutputStream out;
try {
String countFilePath = getServletContext()
.getRealPath("/count.xls");
FileInputStream in = new FileInputStream(new File(countFilePath));
List<UserVO> list =getUserList();
HSSFWorkbook workBook=new HSSFWorkbook(in);
HSSFSheet sheet = workBook.getSheetAt(0);
int k =1;
for (int i = 0; i < list.size(); i++) {
UserVO vo = list.get(i);
HSSFRow row= sheet.createRow(++k);
row.createCell(0).setCellValue(vo.getId());
row.createCell(1).setCellValue(vo.getName());
row.createCell(2).setCellValue(vo.getPassword());
row.createCell(3).setCellValue(vo.getSex());
}
out = new FileOutputStream(getServletContext()
.getRealPath("/temp/count.xls"));
out = resp.getOutputStream();
//finally
workBook.write(out);
in.close();
workBook.close();
out.flush();
out.close();
//record user download log operation
} catch (Exception e) {
e.printStackTrace ();
}finally{
}
}
private List<UserVO> getUserList() {
List<UserVO> users = new ArrayList<UserVO>();
users.add(new UserVO("1","张三","111","男"));
users.add(new UserVO("2","李四","111","女"));
return users;
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
super.doPost(req, resp);
}
}
The result is as follows: