excel 下载

页面

<div class="col-sm-3" >    <a class="btn btn-primary btn-large btn-block" id="export" >导出采购单</a></div>
$("#export").click(function (){    var v_frameworkName= $("#ordersearchFrameworkName").val()==null?"":$("#ordersearchFrameworkName").val();    var v_orderName= $("#ordersearchMediaName").val()==null?"":$("#ordersearchMediaName").val();    var v_providerName= $("#ordersearchProviderName").val()==null?"":$("#ordersearchProviderName").val();    var v_discountMethod= $("#ordersearchDiscountMethod").val()==null?"":$("#ordersearchDiscountMethod").val();    var v_searchWealthAccount= $("#ordersearchWealthAccount").val()==null?"":$("#ordersearchWealthAccount").val();    var v_date = $("#orderdate").val() == null ? "" : $("#orderdate").val();    var searchUrl = "/saleQuery1/export-do?frameworkName=" + v_frameworkName + "&mediaName=" + v_orderName + "&providerName=" + v_providerName + "&discountMethod=" + v_discountMethod + "&wealthAccount=" + v_searchWealthAccount + "&date=" + v_date;    window.open(searchUrl);});

Java

//    orders    @RequestMapping(value = "/export-do")    @ResponseBody    public void exportExcle(Model model,                            HttpServletRequest request,                            HttpServletResponse response,                            @RequestParam(value = "frameworkName", required = false) String frameworkName,                            @RequestParam(value = "mediaName", required = false) String mediaName,                            @RequestParam(value = "providerName", required = false) String providerName,                            @RequestParam(value = "discountMethod", required = false) String discountMethod,                            @RequestParam(value = "wealthAccount", required = false) String wealthAccount,                            @DateTimeFormat(pattern = "MM/dd/yyyy") @RequestParam(value = "date", required = false) Date date) {        JsonOrders jsonListResults = new JsonOrders();        if (StringUtils.equals("ALL", discountMethod)) {            discountMethod = null;        }        jsonListResults = orderService.listOrder(1, 100000, "id", "desc",date, null, frameworkName, mediaName, providerName, discountMethod, wealthAccount);        try {            List<JsonOrder> orderList= jsonListResults.getRows().stream().peek(order -> {                if (StringUtils.isNotEmpty(order.getDiscountMethod())) {                    if (StringUtils.equalsIgnoreCase(order.getDiscountMethod(), "REBATE")) {                        order.setDiscountMethodStr("返点");                    } else {                        order.setDiscountMethodStr("折扣");                    }                }                if (StringUtils.equalsIgnoreCase(order.getStatus(), "SUBMITED")) {                    order.setStatusStr("待审核");                } else if (StringUtils.equalsIgnoreCase(order.getStatus(), "FPASS")) {                    order.setStatusStr("待付款");                } else if (StringUtils.equalsIgnoreCase(order.getStatus(), "SPASS")) {                    order.setStatusStr("待确认");                }else if (StringUtils.equalsIgnoreCase(order.getStatus(), "NPASS")) {                    order.setStatusStr("审核不通过");                } else if (StringUtils.equalsIgnoreCase(order.getStatus(), "TPASS")) {                    order.setStatusStr("启用");                } else if (StringUtils.equalsIgnoreCase(order.getStatus(), "PASSFM")) {                    order.setStatusStr("已收款");                } else if (StringUtils.equalsIgnoreCase(order.getStatus(), "DISABLE")) {                    order.setStatusStr("停用");                } else if (StringUtils.equalsIgnoreCase(order.getStatus(), "COMPLETE")) {                    order.setStatusStr("完成");                } else{                    order.setStatusStr("");                }            }).collect(Collectors.toList());            jsonListResults.getRows().clear();            jsonListResults.getRows().addAll(orderList);            File file = ExcelUtil.write(Paths.get("/tmp/", new DateTime().toString("yyyy-MM-dd")+ RandomStringUtils.randomNumeric(6)+".xls"),                    Lists.newArrayList("frameworkName", "mediaName", "providerName", "wealthAccount", "discountMethodStr", "discountMedia", "discountProvider", "recharge", "rechargeTime", "statusStr"),                    Lists.newArrayList("业务名称", "媒体", "供应商", "加款账号", "优惠方式", "媒体优惠", "代理商优惠", "到账金额", "到账时间", "状态"),                    Lists.newArrayList("","","","","","#,#0.00","#,#0.00","#,#0.00","yyyy/m/d",""),                    jsonListResults.getRows());            downloadExcle(request, response, file);        } catch (Exception e) {            if (logger.isErrorEnabled()) {                logger.error("exportExcle", e);            }            fileNotFound(request, response);        }    }
public class JsonOrders extends BaseJson {

    /**     *     */

    int currentPage = 1;    int totalPages;    int totalRecords;    private List<JsonOrder> rows;

    public int getCurrentPage() {        return currentPage;    }

    public void setCurrentPage(int currentPage) {        this.currentPage = currentPage;    }

    public int getTotalPages() {        return totalPages;    }

    public void setTotalPages(int totalPages) {        this.totalPages = totalPages;    }

    public int getTotalRecords() {        return totalRecords;    }

    public void setTotalRecords(int totalRecords) {        this.totalRecords = totalRecords;    }

    public List<JsonOrder> getRows() {        if (rows == null) {            rows = new ArrayList<JsonOrder>();        }        return rows;    }

    public void setRows(List<JsonOrder> rows) {        this.rows = rows;    }}
public class JsonOrder extends BaseJson {

    /**     *     */

    private String frameworkName;    private String mediaName;    private String providerName;    private String wealthAccount;    private String discountMethod;    private BigDecimal discountMedia;    private BigDecimal discountProvider;    private BigDecimal cost;    private BigDecimal recharge;    private Date rechargeTime;    private Date payTime;    private long mediaId;    private Date BUApprove;    private Date fianceApprove;    private Date finalApprove;    private String status;

    private String statusStr;    private String discountMethodStr;

    private String urgent;

。。。。。。。。。。。。。。。。。
public abstract class BaseJson implements Serializable {    /**     *     */    private static final long serialVersionUID = 5201899209821687086L;

    private long id;

    private boolean disabled;    private boolean deleted;    private Date dateCreated;    private Date lastModified;    private String remark;

    private int sortOrder;
package cn.com.singlemountaintech.dxmanagement.common.utils;

import com.google.common.collect.HashBasedTable;import com.google.common.collect.Table;import org.apache.commons.beanutils.BeanUtils;import org.apache.commons.beanutils.ConvertUtils;import org.apache.commons.beanutils.PropertyUtils;import org.apache.commons.beanutils.converters.BigDecimalConverter;import org.apache.commons.collections.CollectionUtils;import org.apache.commons.io.FileUtils;import org.apache.commons.lang3.StringUtils;import org.apache.poi.hssf.usermodel.HSSFCellStyle;import org.apache.poi.hssf.usermodel.HSSFFont;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.*;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import org.slf4j.Logger;import org.slf4j.LoggerFactory;

import java.beans.PropertyDescriptor;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.lang.reflect.InvocationTargetException;import java.math.BigDecimal;import java.nio.file.Path;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;

/** * Created by smt2 on 16-6-6. */public class ExcelUtil {    private static final String EXCEL_XLS = "xls";    private static final String EXCEL_XLSX = "xlsx";    private static final Logger logger = LoggerFactory.getLogger(ExcelUtil.class);

    private static DataFormatter formatter = new DataFormatter();

    static {        ConvertUtils.register(new BigDecimalConverter("0"), BigDecimal.class);    }    public static <T> List<T> read(File file, List<String> fields, List<String> columns, int offset, Class<T> cls) throws Exception {        if (CollectionUtils.isNotEmpty(fields) && CollectionUtils.isNotEmpty(columns) && fields.size() == columns.size()) {            Table table = readToTable(file, offset);

            List<T> list = new ArrayList<T>();            if (CollectionUtils.isNotEmpty(fields)                    && CollectionUtils.isNotEmpty(columns)                    && fields.size() == columns.size()                    && table != null                    && CollectionUtils.isNotEmpty(table.cellSet())) {                for (int index = 1; index <= table.rowKeySet().size(); index++) {                    T t = cls.newInstance();                    for (int i = 0; i < fields.size(); i++) {                        instantiateNestedProperties(t, fields.get(i));                        BeanUtils.setProperty(t, fields.get(i), table.get(index, columns.get(i)));                    }                    list.add(t);                }                return list;            }        }        return null;    }

    public static <T> File write(Path path, List<String> fields, List<String> columns, List<T> list)throws Exception {        return write(path, "sheet1", fields, columns, null, list);    }

    public static <T> File write(Path path, List<String> fields, List<String> columns,List<String> formaters, List<T> list)throws Exception {        return write(path, "sheet1", fields, columns, formaters, list);    }

    public static <T> File write(Path path, String sheetName, List<String> fields, List<String> columns, List<String> formaters, List<T> list) throws Exception {        File file = FileUtils.getFile(path.toString());        Workbook workbook = createWorkbook(path);        Sheet sheet = null;        if (StringUtils.isNotEmpty(sheetName)) {            sheet = workbook.createSheet(sheetName);        } else {            sheet = workbook.createSheet("sheet1");        }        Row row = sheet.createRow(0);        sheet.setDefaultRowHeightInPoints((short) 15);        CellStyle headerStyle = workbook.createCellStyle();        headerStyle.setVerticalAlignment(CellStyle.VERTICAL_CENTER);        headerStyle.setAlignment(CellStyle.ALIGN_CENTER);        Font headerFont = workbook.createFont();        headerFont.setBoldweight(Font.BOLDWEIGHT_BOLD);        headerFont.setFontHeightInPoints((short) 10);        headerStyle.setFont(headerFont);        row.setHeight((short) (25 * 20));        for (int i = 0; i < columns.size(); i++) {            Cell cell = row.createCell(i);            cell.setCellStyle(headerStyle);            cell.setCellValue(columns.get(i));        }        for (int i = 0; i < list.size(); i++) {            row = sheet.createRow(i + 1);            rowFormat(workbook, row, fields, formaters, list.get(i));        }        workbook.write(FileUtils.openOutputStream(file));

        return file;    }

    public static <T> File write(Path path, String sheetName, List<String> fields, List<String> columns, List<T> list) {        HSSFWorkbook workbook = null;        File file = FileUtils.getFile(path.toString());        try {            workbook = new HSSFWorkbook(new FileInputStream(file));            HSSFSheet sheet = workbook.createSheet(sheetName);            Row row = sheet.createRow(0);            sheet.setDefaultRowHeightInPoints((short) 15);            HSSFCellStyle headerStyle = (HSSFCellStyle) workbook.createCellStyle();            headerStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);            headerStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);            HSSFFont headerFont = (HSSFFont) workbook.createFont();            headerFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);            headerFont.setFontHeightInPoints((short) 10);            headerStyle.setFont(headerFont);            row.setHeight((short) (25 * 20));            for (int i = 0; i < columns.size(); i++) {                Cell cell = row.createCell(i);                cell.setCellStyle(headerStyle);                cell.setCellValue(columns.get(i));            }            for (int i = 0; i < list.size(); i++) {                row = sheet.createRow(i + 1);                for (int j = 0; j < fields.size(); j++) {

                    row.createCell(j).setCellValue(BeanUtils.getProperty(list.get(i), fields.get(j)));                }            }            workbook.write(FileUtils.openOutputStream(file));        } catch (Exception e) {            if (logger.isErrorEnabled()) {                logger.error("writeExcel", e);            }

        } finally {            try {                workbook.close();            } catch (Exception e) {                if (logger.isErrorEnabled()) {                    logger.error("writeExcel", e);                }            }        }        return file;    }

    public static Table readToTable(File file, int offset) throws Exception {        if (file != null) {            Table<Integer, String, String> table = HashBasedTable.create();            Workbook workbook = getWorkbook(file);            Sheet sheet = workbook.getSheetAt(0);            Row row = sheet.getRow(offset);            List<String> title = new ArrayList<String>();            for (Cell cell : row) {                title.add(getCellStringValue(cell));            }            for (int rowIndex = offset + 1; rowIndex <= sheet.getLastRowNum(); rowIndex++) {                row = sheet.getRow(rowIndex);                if (row!=null){                    for (int i = 0; i < title.size(); i++) {                        table.put(rowIndex, title.get(i), getCellStringValue(row.getCell(i)));                    }                }            }            return table;        }        return null;    }

    private static Workbook getWorkbook(File file) throws IOException {        Workbook wb = null;        if (file.getName().endsWith(EXCEL_XLS)) {     //Excel 2003            wb = new HSSFWorkbook(new FileInputStream(file));        } else if (file.getName().endsWith(EXCEL_XLSX)) {    // Excel 2007/2010            wb = new XSSFWorkbook(new FileInputStream(file));        }        return wb;    }    private static Workbook createWorkbook(Path path) {        Workbook wb = null;        if (path.toString().endsWith(EXCEL_XLS)) {     //Excel 2003            wb = new HSSFWorkbook();        } else if (path.toString().endsWith(EXCEL_XLSX)) {    // Excel 2007/2010            wb = new XSSFWorkbook();        }        return wb;    }    private static void instantiateNestedProperties(Object obj, String fieldName) {        try {            String[] fieldNames = fieldName.split("\\.");            if (fieldNames.length > 1) {                StringBuffer nestedProperty = new StringBuffer();                for (int i = 0; i < fieldNames.length - 1; i++) {                    String fn = fieldNames[i];                    if (i != 0) {                        nestedProperty.append(".");                    }                    nestedProperty.append(fn);

                    Object value = PropertyUtils.getProperty(obj, nestedProperty.toString());

                    if (value == null) {                        PropertyDescriptor propertyDescriptor = PropertyUtils.getPropertyDescriptor(obj, nestedProperty.toString());                        Class<?> propertyType = propertyDescriptor.getPropertyType();                        Object newInstance = propertyType.newInstance();                        PropertyUtils.setProperty(obj, nestedProperty.toString(), newInstance);                    }                }            }        } catch (IllegalAccessException e) {            throw new RuntimeException(e);        } catch (InvocationTargetException e) {            throw new RuntimeException(e);        } catch (NoSuchMethodException e) {            throw new RuntimeException(e);        } catch (InstantiationException e) {            throw new RuntimeException(e);        }    }

/*    public static File format(File file, List<String> columns, List<String> formater, int offset) throws IOException {        Workbook wb = getWorkbook(file);        Sheet sheet = wb.getSheetAt(0);        DataFormat format = wb.createDataFormat();        List<CellStyle> cellStyles = new ArrayList<>();        for (String s : formater) {            if (StringUtils.isNotEmpty(s)) {                CellStyle cellStyle = wb.createCellStyle();                cellStyle.setDataFormat(format.getFormat(s));                cellStyles.add(cellStyle);            } else {                cellStyles.add(wb.createCellStyle());            }        }        Row row = null;        for (int rowIndex = offset + 1; rowIndex <= sheet.getLastRowNum(); rowIndex++) {            row = sheet.getRow(rowIndex);            if (row != null) {                for (int i = 0; i < columns.size(); i++) {                    row.getCell(i).setCellStyle(cellStyles.get(i));                }            }        }        wb.write(FileUtils.openOutputStream(file));        return file;    }*/

    public static <T> Row rowFormat(Workbook wb, Row row, List<String> fields, List<String> formater, T t) throws IllegalAccessException, NoSuchMethodException, InvocationTargetException {        if (CollectionUtils.isNotEmpty(formater)) {            List<CellStyle> cellStyles = getCellStyles(wb, formater);            for (int j = 0; j < fields.size(); j++) {                Object value = PropertyUtils.getProperty(t, fields.get(j));                try {                    setCellValue(row.createCell(j), value, cellStyles.get(j));                } catch (Exception e) {                    if (logger.isErrorEnabled()) {                        logger.error("write", e);                    }                }            }        } else {            for (int j = 0; j < fields.size(); j++) {                String value = BeanUtils.getProperty(t, fields.get(j));                try {                    row.createCell(j).setCellValue(value);                } catch (Exception e) {                    if (logger.isErrorEnabled()) {                        logger.error("write", e);                    }                }            }        }        return row;    }

    private static void setCellValue(Cell cell, Object value, CellStyle style) {        if (value instanceof Date) {            cell.setCellValue((Date) value);        } else if ((value instanceof BigDecimal) || (value instanceof Float) || (value instanceof Double)) {            cell.setCellValue(Double.parseDouble(value.toString()));        } else {            cell.setCellValue(value.toString());        }        cell.setCellStyle(style);    }

    private static List<CellStyle> getCellStyles(Workbook wb, List<String> formater) {        DataFormat format = wb.createDataFormat();        List<CellStyle> cellStyles = new ArrayList<>();        CellStyle cellStyle = wb.createCellStyle();        for (String s : formater) {            if (StringUtils.isNotEmpty(s)) {

                cellStyle.setAlignment(HorizontalAlignment.CENTER);                cellStyle.setDataFormat(format.getFormat(s));                cellStyles.add(cellStyle);            } else {

                cellStyle.setAlignment(HorizontalAlignment.CENTER);                cellStyles.add(cellStyle);            }        }        return cellStyles;    }

    private static String getCellStringValue(Cell cell) {

        String cellValue = "";        if (cell == null) {            return "";        }        switch (cell.getCellType()) {            case Cell.CELL_TYPE_STRING:                cellValue = cell.getStringCellValue();                if (cellValue.trim().equals("") || cellValue.trim().length() <= 0)                    cellValue = " ";                break;            case Cell.CELL_TYPE_NUMERIC:                if (DateUtil.isCellDateFormatted(cell)) {                    Date date = cell.getDateCellValue();                    SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");                    try {                        cellValue = sdf.format(date);                    } catch (Exception e) {                        if (logger.isErrorEnabled()) {                            logger.error("date parse exception", e);                        }                    }                } else {                    cellValue = String.valueOf(formatter.formatCellValue(cell));                }                break;            case Cell.CELL_TYPE_FORMULA:                Workbook wb = cell.getSheet().getWorkbook();                CreationHelper crateHelper = wb.getCreationHelper();                FormulaEvaluator evaluator = crateHelper.createFormulaEvaluator();                cellValue = getCellStringValue(evaluator.evaluateInCell(cell));                break;            case Cell.CELL_TYPE_BLANK:                cellValue = "";                break;            case Cell.CELL_TYPE_BOOLEAN:                break;            case Cell.CELL_TYPE_ERROR:                break;            default:                break;        }        return cellValue;    }}
public void downloadExcle(HttpServletRequest request, HttpServletResponse response, File file) {    try {        String userAgent = request.getHeader("User-Agent");        if (file != null && file.exists()) {            String fileName = URLEncoder.encode(file.getName(), "UTF-8");            response.setContentType("application/vnd.ms-excel;charset=UTF-8");            response.setCharacterEncoding("UTF-8");            if (userAgent.contains("IE") || userAgent.contains("Chrome")) {                response.setHeader("Content-Disposition", "attachment; filename=" + fileName);            } else {                response.setHeader("Content-Disposition", "attachment; filename*=UTF-8‘‘" + fileName);            }            IOUtils.copy(FileUtils.openInputStream(file), response.getOutputStream());            response.flushBuffer();            return;        } else {            fileNotFound(request, response);            return;        }    } catch (Exception e) {        if (logger.isErrorEnabled()) {            logger.error("saleReport", e);        }    }    fileNotFound(request, response);}
时间: 2024-09-28 18:32:59

excel 下载的相关文章

Springboot利用poi导出excel下载

Springboot利用poi导出excel下载 因为项目中之前的做法是用反射获取属性,所以demo中也是用的反射,我看网上很多文章都是存入一个List中,不知道这两种哪种更何合适一点,或者有什么更好的方法也请大佬们赐教. pom <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.13</version&g

C# MVC 自定义ActionResult实现EXCEL下载

前言 在WEB中,经常要使用到将数据转换成EXCEL,并进行下载.这里整理资料并封装了一个自定义ActionResult类,便于使用.如果文章对你有帮助,请点个赞. 话不多少,这里转换EXCEL使用的NPOI.还是用了一下反射的知识,便于识别实体类的一些自定义特性. 一.自定义一个Attribute using System; namespace WebSeat.Entity.Member.Attributes { /// <summary> /// 说明:Excel属性特性 /// 创建日期

POI导出JavaWeb中的table到excel下载

做项目的时候遇到这样的需求: 一个表单,输入信息点击查询得到一个table,然后导出table里的内容到excel,让用户下载.如下图: 需要解决的问题: 1.如何让一个form提交两次?(因为导出excel按钮是要根据查询后的结果导出) 解决办法:第一次提交用jQuery的submit,第二次提交用onclick="doExport()" <form class="form-horizontal" id="searchForm">

MVC +NPOI+AJAX 查询并生成excel 下载

Controller 代码: public class SubArea2STIReportController : BaseController { [ActionDescription("分区2STI查询")] public ActionResult Index() { var vm = CreateVM<SubArea2STIReportVM>(); return PartialView(vm); } [HttpPost] [ActionDescription(&quo

ASP.NET之Excel下载模板、导入、导出操作

1.下载模板功能 前提是服务器某文件夹中有这个文件.代码如下 1 protected void btnDownload_Click(object sender, EventArgs e) 2 { 3 var path = Server.MapPath(("upfiles\\") + "test.xlt"); //upfiles-文件夹 test.xlt-文件 4 var name = "test.xlt"; 5 6 try 7 { 8 var f

Django 支持自定义表头和根据数据库某字段生成多个sheet的excel下载

工作需要,需要做下载excel的功能,同时根据数据库的某个字段完成多sheet的功能. 由于用处较多,封装了一个函数. add_worksheet: 为生成多个sheet的方法 from io import BytesIO import xlsxwriter def download_excel(cursor, sql_field_index=False, custom_headers=False, sheet_title="worksheet_1"): ""&qu

将Table内容转为Excel下载

使用:method1(table); 说明:参数table为table元素的ID; var idTmr; function getExplorer() { var explorer = window.navigator.userAgent ; //ie if (explorer.indexOf("MSIE") >= 0) { return 'ie'; } //firefox else if (explorer.indexOf("Firefox") >=

使用poi进行excel下载

进行信息表excel导出 @RequestMapping("exportExl")public ResponseEntity<byte[]> exportExl() throws Exception {    List<Customer> clist = cs.getList();    HSSFWorkbook book = new HSSFWorkbook();    HSSFSheet sheet = book.createSheet("客户信息

poi之Excel下载之详细设置

1.设置标题格式 /** * HEAD样式 * * @param workbook * @param sheet */ public void setHeadCellStyles(HSSFWorkbook workbook, HSSFSheet sheet) { headStyle = workbook.createCellStyle(); headStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); HSSFFont font = workbook.c