POI導出用戶列表練習功能

在剛剛工作時就寫過類似的功能,時隔4年有重新用到改功能,真後悔,自己沒有寫在博客上以便查看......a今天略微總結

使用的平臺:

springMVC+Mybatis,要使用的依賴包:

 js層:



controller層:

/**
     * 導出Excel用戶信息
     * @param response
     * @param user
     */
    @RequestMapping("/exportFile")
    public void exportFile(HttpServletResponse response,User user){
        List<String> head = new ArrayList<String>();
        head.add("賬號");
        head.add("暱稱");
        head.add("所在學校");
        head.add("所在地區");
        head.add("用戶類型");
        head.add("手機");
        head.add("郵箱");
        
        List<List<String>> body = new ArrayList<List<String>>();
        
        String bak1 = getUserBak1();
        String bak2 = getUserBak2();

        if (bak1.equals(User.bak1_operator)) {
            user.setAuthority(bak1);
        } else if (!bak1.equals(User.bak1_no)) {
            user.setAuthority(bak1);
            user.setCountyId(bak2);
            if (bak1.equals(User.bak1_schoool)) {
                user.setSchoolId(getUserSchoolId());
            }
        }

        List<User> userList = userService.findSelective(user);
        for (int i = 0; i < userList.size(); i++) {
            List<String> bodyRow = new ArrayList<String>();
            User users = userList.get(i);
            bodyRow.add(users.getUserCode());
            bodyRow.add(users.getNickName());
            bodyRow.add(users.getSchoolName());
            bodyRow.add(users.getAreaName());
            String userType = users.getUserType();
            if(User.userType_leader.equalsIgnoreCase(userType)){
                userType =  "領導";
            }else if(User.userType_research.equalsIgnoreCase(userType)){
                userType =  "教研員";
            }else if(User.userType_teachers.equalsIgnoreCase(userType)){
                userType =  "教師";
            }else if(User.userType_students.equalsIgnoreCase(userType)){
                userType =  "學生";
            }
            bodyRow.add(userType);
            bodyRow.add(users.getPhone());
            bodyRow.add(users.getEmail());
            body.add(bodyRow);
        }
        
        String title = "用戶信息";
        HSSFWorkbook wb = ExcelUtil.expExcel(title,head, body);
        ExcelUtil.outFile(response,wb);

    }

ExcelUtil:

package com.zz.zb.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

 

/**

     * 創建excel並填入數據
     * @author David
     * @date  
     * @param head 數據頭
     * @param body 主體數據
     * @return HSSFWorkbook
     */
    public static HSSFWorkbook expExcel(String title,List<String> head, List<List<String>> body) {
         //創建一個excel工作簿
         HSSFWorkbook workbook = new HSSFWorkbook();
         //創建一個sheet工作表
         HSSFSheet sheet = workbook.createSheet(title);
         //創建第0行表頭,再在這行裏在創建單元格,並賦值
         HSSFRow row = sheet.createRow(0);
         //每個單元格
         HSSFCell cell = null;
         for (int i = 0; i < head.size(); i++) {
             cell = row.createCell(i);
             //設置值
             cell.setCellValue(head.get(i));
         }
         //將主體數據填入Excel中
         for (int i = 0; i < body.size(); i++) {
             row = sheet.createRow(i + 1);
            
             List<String> bodyRow = body.get(i);
             for (int k = 0; k < bodyRow.size(); k++) {
                //設置值  從前到後的順序
                row.createCell(k).setCellValue(bodyRow.get(k));
             }
         }
         return workbook;

    }

    /**
     * 設定導出文檔的格式並將工作簿輸出到流中
     * @param response
     * @param wb
     */
    public static void outFile(HttpServletResponse response,HSSFWorkbook wb) {
        response.setContentType("application/vnd.ms-excel");    
        response.setHeader("Content-disposition", "attachment;filename=user.xls");
        
        try {
            OutputStream ouputStream = response.getOutputStream();    
            wb.write(ouputStream);    
            ouputStream.flush();    
            ouputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章