//創建Servlet
@WebServlet("/DownServlet") //注解
public class DownServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public DownServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 下載Excel操作--導出Excel
//excel:存放數據(以二維表的形式存放)
//二維表:列(cols) 單元格
String[]cols={"username","pwd","salary"};//設置列名
String[]labers={"用戶名","密碼","工資"};//設置列名字
List<Map<String, Object>> list=new ArrayList<Map<String,Object>>();//(存放map集合)
Map<String, Object> map=new HashMap<String, Object>();//定義object類型(存放鍵值對)
map.put("username", "東東");
map.put("pwd", "123");
map.put("salary", 2000);
list.add(map);
response.setHeader("Content-disposition", "attachment;filename=empInfo.xls");//激活文件下載對話框(*重點*)
OutputStream out=response.getOutputStream();//?輸出流寫入
XSSFWorkbook workbook = new XSSFWorkbook(); //java導出Excel的工具類
XSSFSheet sheet = workbook.createSheet("emp"); // 創建sheet頁
// 每個頁中有行,創建行 按照索引index順序創建
XSSFRow row = sheet.createRow(0);// index 從0開始,獲取該頁的第一行
// 在把我們對應的數據插入到Excel中的sheet頁中
for (int i = 0; i < labers.length; i++) {
// 單元格
XSSFCell cell = row.createCell(i);//獲取第一行的單元格
cell.setCellValue(labers[i]);// 把label中的值出入到到單元格中
}// 此時把表格中的列標題的值放到了Excel的表中
// 把對應的列的值放入到單元格中
for (int i = 0; i < list.size(); i++) {
row = sheet.createRow(i + 1);// 因為第一行放的是列標題,所以從第二行開始
Map<String, Object> map2 = list.get(i);
for (int j = 0; j < cols.length; j++) {
XSSFCell cell = row.createCell(j);
cell.setCellValue(map2.get(cols[j]).toString());// map.get(key)-->獲取到value值,將獲取的value值放進單元格中
}
}
try {
workbook.write(out);// 使用文件流寫入(不是很懂)
} catch (IOException e) {
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
