java excel导出

需求 导出excel

package com.sky.car.controller.jt;

import com.sky.car.model.OfflineVo;
import com.sky.car.util.HttpUtils;
import com.sky.common.Environment;
import jxl.Workbook;
import jxl.format.CellFormat;
import jxl.read.biff.BiffException;
import jxl.write.*;
import net.sf.json.JSONArray;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by jack on 2017/5/15.
 */
@Controller
@CrossOrigin
public class StatOfflineDataExportController {
    @Autowired
    Environment environment;

    @RequestMapping(value = "/statOfflineData/export", produces = {"text/html;charset=UTF-8"})
    public void download(HttpServletRequest request, HttpServletResponse response,
                         String days, String ownerName, String apiKey) throws IOException, BiffException, WriteException, Exception {
        response.setHeader("Content-Disposition", "attachment; filename=count.xls");
        WritableWorkbook writableWorkbook = ExcelUtils.createTemplate(response.getOutputStream(), environment.getJtHost(), days, ownerName, apiKey);
        writableWorkbook.write();
        writableWorkbook.close();
    }

    static class ExcelUtils {
        public static WritableWorkbook createTemplate(OutputStream output, String headerUrl, String days, String ownerName, String apiKey) throws IOException, WriteException, Exception {
            WritableWorkbook writableWorkbook = Workbook.createWorkbook(output);
            WritableSheet wsheet = writableWorkbook.createSheet("离线数据统计", 0);


            CellFormat cf = writableWorkbook.getSheet(0).getCell(1, 0).getCellFormat();
            WritableCellFormat wc = new WritableCellFormat();
            // 设置居中
            // wc.setAlignment(GroupLayout.Alignment.CENTER);
            // 设置边框线
            wc.setBorder(Border.ALL, BorderLineStyle.THIN);
            wc.setBackground(jxl.format.Colour.GREEN);

            Label nc0 = new Label(0, 0, "行政区域", wc);//Label(x,y,z)其中x代表单元格的第x+1列,第y+1行, 单元格的内容是z
            Label nc1 = new Label(1, 0, "单位名称", wc);
            Label nc2 = new Label(2, 0, "车牌号", wc);
            Label nc3 = new Label(3, 0, "车牌颜色", wc);
            Label nc4 = new Label(4, 0, "最后上线时间", wc);
            Label nc5 = new Label(5, 0, "离线天数", wc);
            Label nc6 = new Label(6, 0, "统计日期", wc);
            wsheet.addCell(nc0);
            wsheet.addCell(nc1);
            wsheet.addCell(nc2);
            wsheet.addCell(nc3);
            wsheet.addCell(nc4);
            wsheet.addCell(nc5);
            wsheet.addCell(nc6);
            List<OfflineVo> list = loadDate(apiKey, headerUrl, ownerName, days);
            for (int i = 1; i <= list.size(); i++) {
                OfflineVo offlineVo = list.get(i - 1);
                Label ncd0 = new Label(0, i, offlineVo.getDistrictName());//Label(x,y,z)其中x代表单元格的第x+1列,第y+1行, 单元格的内容是z
                Label ncd1 = new Label(1, i, offlineVo.getOwnerName());
                Label ncd2 = new Label(2, i, offlineVo.getVname());
                Label ncd3 = new Label(3, i, offlineVo.getColor());
                Label ncd4 = new Label(4, i, offlineVo.getLastGPSTime());
                Label ncd5 = new Label(5, i, offlineVo.getOfflineDays());
                Label ncd6 = new Label(6, i, offlineVo.getStatDate());
                wsheet.addCell(ncd0);
                wsheet.addCell(ncd1);
                wsheet.addCell(ncd2);
                wsheet.addCell(ncd3);
                wsheet.addCell(ncd4);
                wsheet.addCell(ncd5);
                wsheet.addCell(ncd6);
            }
            return writableWorkbook;
        }
    }

    static List<OfflineVo> loadDate(String apiKey, String headerUrl, String ownerName, String days) throws Exception {
        String url = headerUrl + "/mnt.rest/rest/plat-stat-shx-svc/statOfflineData?ownerName=@ownerName&days=@days"
                .replace("@ownerName", ownerName)
                .replace("@days", days);
        List<NameValuePair> params = new ArrayList<NameValuePair>();
        params.add(new BasicNameValuePair("ownerName", ownerName));
        params.add(new BasicNameValuePair("days", days));
        String result = HttpUtils.post(url, params, apiKey);
        JSONArray array = JSONArray.fromObject(result);
        List<OfflineVo> list = JSONArray.toList(array, OfflineVo.class);
        return list;
    }

}

猜你喜欢

转载自guozhijie87.iteye.com/blog/2376430