精华内容
下载资源
问答
  • 数据不是一成不变的,表格数据的表头也是可删可减,这个时候怎么处理动态表头呢(此处动态表头的数据来自与后端查询所得数据,如果是固定类的动态表头请参考:...isColumnHidden)说明:没有使用过这个注解,网坛上有人说...

    数据不是一成不变的,表格数据的表头也是可删可减,这个时候怎么处理动态表头呢(此处动态表头的数据来自与后端查询所得数据,如果是固定类的动态表头请参考:http://doc.wupaas.com/docs/easypoi/easypoi-1c0u96flii98v 中的注解:isColumnHidden)

    说明:没有使用过这个注解,网坛上有人说,这个只是隐藏好像还是会导出,这个光荣而又艰巨的任务就交给各位了

    /**

    * 动态列导出

    * @param response

    * @param param 设置表的文件名和sheet名

    * @param headList 表头

    * @param list 数据源

    * @throws IOException

    */

    public static void exportActiveSheet(HttpServletResponse response, ExportParams param, List headList, List> list) throws IOException {

    Workbook workbook = null;

    workbook = ExcelExportUtil.exportExcel(param, headList,list);

    if (workbook != null) {

    downLoadExcel(param.getIndexName(), response, workbook);

    }

    }

    在业务层你需要

    List colList = new ArrayList<>();定义全局的colList 就是表头设置

    ExcelExportEntity colEntity = new ExcelExportEntity("表头名称", "键");

    colEntity.setNeedMerge(true);

    colEntity.setWidth(30);

    colEntity.setHeight(20);

    .....很多格式或姿势你都可以在这里设置

    colList.add(colEntity);

    动态列表头

    ExcelExportEntity desginsGroup = new ExcelExportEntity("表头名称", "键");//设置整个动态列所属列可以不要名称

    List paramCols = new ArrayList<>();动态列表头的集合

    list.forEach(item->{// list 动态列表头显示数据,使用forEach请注意自己jdk的版本

    // 为了方便后面匹配数据,这里指定key和名称最好一至,方便匹配数值

    // 动态列

    paramCols.add(new ExcelExportEntity(item.getOfficeName(), item.getOfficeName(),30));

    });

    desginsGroup.setList(paramCols);

    colList.add(desginsGroup);

    最后就是数据源了

    List> list2 = new ArrayList>();

    list.forEach(item->{

    Map valMap = new HashMap();

    valMap.put("projectName", item.getProjectName());

    List> deliDetailList = new ArrayList>();

    Map deliValMap = new HashMap();

    item.getList().forEach(item2->{

    deliValMap.put(item2.getOfficeName(), item2.getDesginArea());

    });

    deliDetailList.add(deliValMap);

    valMap.put("desgins", deliDetailList);

    list2.add(valMap);

    });

    怎么调用就不用我写了吧

    展开全文
  • 动态表头

    2010-08-02 23:19:39
    最近在我公司drp(运营分销系统)开发中,需要大量报表,由于本人... 由于我们的产品是用于服装行业的,在服装行业有一个尺码组,非常的麻烦,在制作含有尺码组的报表时,表头的各种尺码不能写死,要从数据库查询出来.但是,一...
    最近在我公司drp(运营分销系统)开发中,需要大量报表,由于本人有过jasperReport的开发经验,所以选用了它,jr确实不错,开源,可扩展性很好,缺点就是免费的文档很少,更可气的是,代码中的doc少的可怜,基本上没有参考价值.

    由于我们的产品是用于服装行业的,在服装行业有一个尺码组,非常的麻烦,在制作含有尺码组的报表时,表头的各种尺码不能写死,要从数据库查询出来.但是,一般的报表工具都是不支持表头动态化的(我理解,报表嘛,是呈现给特定人物如老板看的特定内容,表头应该是设计好的,不会经常性的更改),jasperReport也是一样,并不直接支持,细究它的实现过程,我们还是可以扩展从而解决这个问题的.

    先看jasperReport的流程图.

    从上图可看到,jrxml文件要通过JRXmlLoader解析为一个JasperDesign的对象,从源码中可以看出,此对象用java类去描述了报表的整个设计,比如,columnHeader,detail,columnFooter等等.然后由JasperCompileManager编译为一个JasperReport对象,其实,如果你用ireport(jasperReport报表的可视化设计器)制作报表,你完全可以不必理会怎样生成jaserReport对象.ireport对此有很好的支持.

    了解了以上过程,我们可以看出,如果要动态的加入设计元素,只能在JasperDesign对象中下手.加入需要的动态元素,我的需求是在columnHeader中加入一个尺码组的表头,代码实现如下.

    java 代码
    1.package com.webstone.drp.report.common.dynamicHeader;
    2.
    3.import java.io.File;
    4.import java.lang.reflect.InvocationTargetException;
    5.import java.util.Iterator;
    6.import org.apache.commons.beanutils.BeanUtils;
    7.import net.sf.jasperreports.engine.JRException;
    8.import net.sf.jasperreports.engine.JasperCompileManager;
    9.import net.sf.jasperreports.engine.JasperReport;
    10.import net.sf.jasperreports.engine.design.JRDesignBand;
    11.import net.sf.jasperreports.engine.design.JRDesignStaticText;
    12.import net.sf.jasperreports.engine.design.JasperDesign;
    13.import net.sf.jasperreports.engine.xml.JRXmlLoader;
    14.
    15./**
    16. * @author yaer
    17. */
    18.@SuppressWarnings("unchecked")
    19.public class ReportDesignProcess {
    20. private static final String flagTextKey = "customFlagText";
    21.
    22. public static JasperReport getJasperReport(String xmlFilePath,
    23. String[][] sizeGroup) throws JRException {
    24. JasperDesign design = getJasperDesign(xmlFilePath);
    25. JRDesignBand columnHeader = (JRDesignBand) design.getColumnHeader();
    26.
    27. reSetColumnHeaderHeight(columnHeader, sizeGroup);
    28. reSetshapeAndPosition(columnHeader, sizeGroup);
    29. addElementToColumnHeader(columnHeader, sizeGroup);
    30. return JasperCompileManager.compileReport(design);
    31. }
    32. private static JasperDesign getJasperDesign(String filePath)
    33. throws JRException {
    34. return JRXmlLoader.load(new File(filePath));
    35. }
    36. private static void reSetColumnHeaderHeight(JRDesignBand columnHeader,
    37. String[][] sizeGroup) {
    38. columnHeader.setHeight(columnHeader.getHeight() * sizeGroup.length);
    39. }
    40. private static JRDesignStaticText getFlagTextInDesign(
    41. JRDesignBand columnHeader) {
    42. return (JRDesignStaticText) columnHeader.getElementByKey(flagTextKey);
    43. }
    44. private static void reSetshapeAndPosition(JRDesignBand columnHeader,
    45. String[][] sizeGroup) {
    46. JRDesignStaticText flagText = getFlagTextInDesign(columnHeader);
    47. Iterator<jrdesignstatictext></jrdesignstatictext> children = columnHeader.getChildren()
    48. .iterator();
    49. JRDesignStaticText element;
    50. while (children.hasNext()) {
    51. element = children.next();
    52. if (element.getX() > flagText.getX()) {
    53. element.setX(flagText.getX() + flagText.getWidth()
    54. * sizeGroup[0].length);
    55. }
    56. if (!flagTextKey.equals(element.getKey())) {
    57. element.setHeight(element.getHeight() * sizeGroup.length);
    58. }
    59. }
    60. }
    61. private static void addElementToColumnHeader(JRDesignBand columnHeader,
    62. String[][] sizeGroup) {
    63. JRDesignStaticText flagText = getFlagTextInDesign(columnHeader);
    64. columnHeader.removeElement(flagText);
    65. for (int i = 0; i < sizeGroup.length; i++) {
    66. for (int j = 0; j < sizeGroup[i].length; j++) {
    67. try {
    68. JRDesignStaticText newElement = (JRDesignStaticText) BeanUtils
    69. .cloneBean(flagText);
    70. newElement.setText(sizeGroup[i][j]);
    71. newElement.setX(flagText.getX() + flagText.getWidth() * j);
    72. newElement.setY(flagText.getY() + flagText.getHeight() * i);
    73. columnHeader.addElement(newElement);
    74. } catch (IllegalAccessException e) {
    75. e.printStackTrace();
    76. } catch (InstantiationException e) {
    77. e.printStackTrace();
    78. } catch (InvocationTargetException e) {
    79. e.printStackTrace();
    80. } catch (NoSuchMethodException e) {
    81. e.printStackTrace();
    82. }
    83. }
    84. }
    85. }
    86.}
    很遗憾,没有写注解,原因是我看了一本书叫<<测试驱动开发>>,里面有一句话"意图导向编程",意思是说,用手段比如容易理解,贴切的类名,方法名,属性达到让读者轻易理解代码.从而少写注解,让代码更简捷.如果大家不大明白以上代码的意思,那就是我写的不够好,还要继续努力.

      此类只有一个方法,根据传来的报表文件路径和一个二维数组式的尺码组生成一个jaserReport的对象.有三个关键方法.重新设置columnHeader的height;重新设置静态内容的形状和大小,添加新的元素到columnHeader中,其实,这儿有一个不太容易理的东西:类中有一个flagTextKey的属性,它是标识报表设计中动态内容的一个样板元素,为什么要这个样板元素了,因为用它承载动态内容的样式,要比在用代码实现方便的多.请看BeanUtils.coloneBean()方法,实际上是克隆样板元素对象.

    这个类设计的太具体于应用,应该写成一个抽象方法,让子类来具体实现加入动态元素的过程,我相信大家的需求和我不太一样.由于时间关系,我没有仔细考究.毕竟这只是一个参考实现.

      最后,在用于ireport画报表时就要注意了,一呈不变的元素该怎么画就怎么画,但样板元素的位置一定要放好.动态内容起始的位置和样式就靠它来定义,大多数时候,它是一个标签.只不过它的"key"属性和上面类的"flagTextKey"要保持一致.

      这个话题就到这儿了,我这儿还有一个我包装的工具类,我们公司的同事都认为对开发报表有帮助.

    java 代码
    1.package com.webstone.drp.report.common;
    2.
    3.import java.util.ArrayList;
    4.import java.util.Collection;
    5.import java.util.HashMap;
    6.import java.util.Map;
    7.import javax.servlet.http.HttpServletRequest;
    8.import javax.servlet.http.HttpSession;
    9.import javax.faces.context.FacesContext;
    10.import org.apache.commons.lang.ArrayUtils;
    11.import com.webstone.drp.report.common.dataSource.JRArrayCollectionDataSource;
    12.import com.webstone.drp.report.common.dynamicHeader.ReportDesignProcess;
    13.import net.sf.jasperreports.engine.JRException;
    14.import net.sf.jasperreports.engine.JasperFillManager;
    15.import net.sf.jasperreports.engine.JasperPrint;
    16.import net.sf.jasperreports.engine.JasperReport;
    17.import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
    18.import net.sf.jasperreports.engine.JRDataSource;
    19.import net.sf.jasperreports.engine.util.JRLoader;
    20.
    21./**
    22. * 使用jasperReport做报表时的工具支持类.有两个用途,生成jasperPrint对象,和设置导出时的session
    23. *
    24. * @author yaer
    25. * @date 2006-8-26
    26. * @modify date 2006-12-8
    27. */
    28.public class ReportUtils {
    29. public static final String XLS = "xls";// 导出为xls文件;
    30. public static final String PDF = "pdf";// 导出为pdf文件;
    31. private static final String JASPER = "jasper";// 编译过后的报表文件;
    32. private static final String JRXML = "jrxml";// 原始的报表文件(xml格式);
    33. private HttpServletRequest request;
    34. private HttpSession session;
    35. private String rootPath;// 报表文件路径
    36.
    37. /**
    38. * 在jsf环境下时构造些工具类对象
    39. *
    40. * @param context
    41. * jsf的上下文对象
    42. */
    43.
    44. public ReportUtils(FacesContext context) {
    45. request = (HttpServletRequest) context.getExternalContext()
    46. .getRequest();
    47. session = (HttpSession) context.getExternalContext().getSession(true);
    48. this.createRootPath(request);// 生成报表文件的绝对路径
    49. }
    50. /**
    51. * 在其它web环境下构造此工具类对象
    52. *
    53. * @param req
    54. * request请求对象
    55. */
    56. public ReportUtils(HttpServletRequest req) {
    57. this.request = req;
    58. this.session = req.getSession();
    59. this.createRootPath(request);// 生成报表文件的绝对路径
    60. }
    61. /**
    62. * 获得报表文件的绝对路径
    63. *
    64. * @return rootPath
    65. */
    66. public String getRootPath() {
    67. return rootPath;
    68. }
    69. /**
    70. * 获得JasperPrint对象; jasperPrint对象在jasperReport中是填充了报表数据后的一个实体,打印,导出,显示都要使用它.
    71. * 此方法含有java5.0支持的'可变参数'特性.params其实质是一个对象数组.在调用些方法时要注意它可能的参数顺序.
    72. * 此方法参数描述:
    73. * 1、最多只有四个参数。
    74. * 2、固定参数filePath表示报表文件的路径,为了支持drp系统中动态尺码组做表头的特性, filePath包括两类:
    75. * 编译过后的文件扩展名为'.jasper'和未编译的原始xml文件'.jrxml';
    76. * 若报表中有动态尺码组作表头,则filePath为扩展名是'.jrxml'的文件。
    77. * 若报表中不涉及动态尺码组,则filePath为扩展名是'.jasper'的文件。
    78. * 3、可变参数params的完整列表是(注意顺序):Object obj/Collection dataSource,String seprator,String[][] sizeGroup.
    79. * 这三个参数中,有一个例外,Object obj/Collection dataSource必须有一个,此参数表示填充报表的数据,可以是一个Collection式的集合,
    80. * 也可以是一个model对象(有且只有一个Collection的属性);
    81. * String seprator表示分隔符,如果数据源是一个Array的集合,则需此参数。String[][]sizeGroup表款尺码组的二维数组。
    82. *
    83. * @param filePath
    84. * @param params
    85. * @return jasperPrint
    86. */
    87. public JasperPrint getJasperPrint(String filePath, Object... params) {
    88. JasperReport jasperReport = null;
    89. try {
    90. if (JASPER.equals(filePath.substring(filePath.indexOf(".") + 1,
    91. filePath.length()))) {// jasper式文件的处理
    92. jasperReport = getReportTemplate(filePath);
    93. }
    94. if (JRXML.equals(filePath.substring(filePath.indexOf(".") + 1,
    95. filePath.length()))) {// jrxml式文件的处理
    96. jasperReport = ReportDesignProcess.getJasperReport(filePath,
    97. (String[][]) params[params.length - 1]);// 重新设置表头,编译
    98. params = ArrayUtils.remove(params, params.length - 1);// 删除参数中的sizeGroup
    99. }
    100. return fillReport(jasperReport, params);
    101. } catch (JRException e) {
    102. e.printStackTrace();
    103. }
    104. return null;
    105. }
    106. /**
    107. * 获得JasperPrint对象;自定义填充报表时的parameter和dataSource. 参数说明和动态表头的用法参考上一方法
    108. * @param filePath
    109. * @param parameter
    110. * @param dataSource
    111. * @param sizeGroup
    112. * @return
    113. */
    114. public JasperPrint getJasperPrint(String filePath, Map parameter,
    115. JRDataSource dataSource, Object... sizeGroup) {
    116. JasperReport jasperReport = null;
    117. try {
    118. if (sizeGroup.length == 0) {
    119. jasperReport = getReportTemplate(filePath);
    120. }
    121. if (sizeGroup.length == 1) {
    122. jasperReport = ReportDesignProcess.getJasperReport(filePath,
    123. (String[][]) sizeGroup[sizeGroup.length - 1]);// 重新设置表头,编译
    124. }
    125. return JasperFillManager.fillReport(jasperReport, parameter,
    126. dataSource);
    127. } catch (JRException e) {
    128. e.printStackTrace();
    129. }
    130. return null;
    131. }
    132. public void setAttrToPage(JasperPrint jasperPrint, String report_fileName,
    133. String report_type) {
    134. session.setAttribute("REPORT_JASPERPRINT", jasperPrint);
    135. session.setAttribute("REPORT_FILENAME", report_fileName);
    136. session.setAttribute("REPORT_TYPE", report_type);
    137. }
    138. private JasperPrint fillReport(JasperReport jasperReport, Object[] params)
    139. throws JRException {
    140. Map parameters = null;
    141. JRDataSource ds = null;
    142. if (params.length == 0) {
    143. return null;
    144. }
    145. if (params.length == 1 && params[0].getClass() == ArrayList.class) {//其实质是要判断是否是集合
    146. ds = new JRBeanCollectionDataSource((Collection) params[0]);
    147. }
    148. if (params.length == 1 && params[0].getClass() != ArrayList.class) {
    149. ClassAnalysis ca = new ClassAnalysis(params[0]);
    150. parameters = ca.getFields();
    151. ds = new JRBeanCollectionDataSource(ca.getSet());
    152. }
    153. if (params.length == 2 && params[0].getClass() == ArrayList.class) {
    154. ds = new JRArrayCollectionDataSource((Collection) params[0],
    155. params[1].toString());
    156. }
    157. if (params.length == 2 && params[0].getClass() != ArrayList.class) {
    158. ClassAnalysis ca = new ClassAnalysis(params[0]);
    159. parameters = ca.getFields();
    160. ds = new JRArrayCollectionDataSource(ca.getSet(), params[1]
    161. .toString());
    162. }
    163. return JasperFillManager.fillReport(jasperReport,
    164. parameters == null ? new HashMap() : parameters, ds);
    165. }
    166. private void createRootPath(HttpServletRequest request) {
    167. rootPath = request.getSession().getServletContext().getRealPath("/")
    168. + "WEB-INF\\classes\\com\\webstone\\drp\\report\\jaser\\";
    169. }
    170. private JasperReport getReportTemplate(String jasperPath)
    171. throws JRException {
    172. return (JasperReport) JRLoader.loadObject(rootPath + jasperPath);
    173. }
    174.}
       此类用于生成填充后报表对象jasperPrint.
    展开全文
  • EasyExcel 动态表头 导出 ,非注解,后台导出, 可分页,可限制每页显示行数,依赖 com.alibaba easyexcel
  • easyPOI动态表头

    千次阅读 2020-07-18 16:14:21
    数据不是一成不变的,表格数据的表头也是可删可减,这个时候怎么处理动态表头呢(此处动态表头的数据来自与后端查询所得数据,如果是固定类的动态表头请参考:... 说明:没有使用过这个注解,网坛上有人说,这个只是...

    数据不是一成不变的,表格数据的表头也是可删可减,这个时候怎么处理动态表头呢(此处动态表头的数据来自与后端查询所得数据,如果是固定类的动态表头请参考:http://doc.wupaas.com/docs/easypoi/easypoi-1c0u96flii98v 中的注解:isColumnHidden)

    说明:没有使用过这个注解,网坛上有人说,这个只是隐藏好像还是会导出,这个光荣而又艰巨的任务就交给各位了

    /**
     * 动态列导出
     * @param response
     * @param param 设置表的文件名和sheet名
     * @param headList 表头
     * @param list 数据源
     * @throws IOException
     */
    public static void exportActiveSheet(HttpServletResponse response, ExportParams param, List<ExcelExportEntity> headList, List<Map<String, Object>> list) throws IOException {
        Workbook workbook = null;
        workbook = ExcelExportUtil.exportExcel(param, headList,list);
        if (workbook != null) {
            downLoadExcel(param.getIndexName(), response, workbook);
        }
    }

     

    在业务层你需要

    List<ExcelExportEntity> colList = new ArrayList<>();定义全局的colList 就是表头设置
    ExcelExportEntity colEntity = new ExcelExportEntity("表头名称", "键");
    colEntity.setNeedMerge(true);
    colEntity.setWidth(30);
    colEntity.setHeight(20);
    .....很多格式或姿势你都可以在这里设置
    colList.add(colEntity);

    动态列表头

    ExcelExportEntity desginsGroup = new ExcelExportEntity("表头名称", "键");//设置整个动态列所属列可以不要名称
    List<ExcelExportEntity> paramCols = new ArrayList<>();动态列表头的集合
    list.forEach(item->{// list 动态列表头显示数据,使用forEach请注意自己jdk的版本
        // 为了方便后面匹配数据,这里指定key和名称最好一至,方便匹配数值
        // 动态列
        paramCols.add(new ExcelExportEntity(item.getOfficeName(), item.getOfficeName(),30));
    });
    desginsGroup.setList(paramCols);
    colList.add(desginsGroup);

    最后就是数据源了

    List<Map<String, Object>> list2 = new ArrayList<Map<String, Object>>();
    list.forEach(item->{
        Map<String, Object> valMap = new HashMap<String, Object>();
        valMap.put("projectName", item.getProjectName());
        List<Map<String, Object>> deliDetailList = new ArrayList<Map<String, Object>>();
        Map<String, Object> deliValMap = new HashMap<String, Object>();
        item.getList().forEach(item2->{
            deliValMap.put(item2.getOfficeName(), item2.getDesginArea());
        });
        deliDetailList.add(deliValMap);
        valMap.put("desgins", deliDetailList);
        list2.add(valMap);
    });

    怎么调用就不用我写了吧

     

    展开全文
  • elementui 动态表头

    2020-09-23 00:16:39
    最近,在用elementui做一个动态表头的功能,把自己开发的流程大概分享一下。 首先,我们得了解这个option的作用: 这个:option属性就是绑定我们列表表格的模板。通过引入我们写好的js文件来构成一个表格。 这...

    最近,在用elementui做一个动态表头的功能,把自己开发的流程大概分享一下。

    首先,我们得了解这个option的作用:

    这个:option属性就是绑定我们列表表格的模板。通过引入我们写好的js文件来构成一个表格。

    这个js文件我也贴一部分代码出来介绍一下

    可以看出来,这个column就是我们的列数组。那么,做法上大体上就确定了,把动态的列对象加入到这个column数组即可。

    那么,什么时候加入呢?当然是要在页面渲染之前加入啦,这个时候就要介绍一下vue的生命周期函数,也叫钩子函数。

    先随便贴个图。。。这个是官方给的图

    clipboard.png

    可以看到,是在create方法初始化data,计算数值,但是dom还没有构建,我们可以在这个时候把动态列对象加入到里边去,这样子,他到时候请求数据的时候会直接赋值。

    下面我就放我一段获取自定义列的方法,写得很普通,大家看看就好。

    //获取自定义字段
    getCusList() {
      var that = this;
      that.tableOption = this.oldTableOption;
      if (that.tableOption.column.length == 9) {
        getMuList(0).then(response => {
          that.customerList = response.data.data;
          if (response.data.data) {
            for (const temp of response.data.data) {
              temp.value = temp.selectValue.split(",");
              that._data[temp.key] = '';
              that.customList.push(temp)
              var temp2 = {}
              if (temp.filedType == '0') {
                if (temp.isSearch == '0') {
                  temp2 = {
                    type: 'input',
                    label: temp.filedName,
                    prop: temp.key,
                    search: true
                  };
                } else {
                  temp2 = {
                    type: 'input',
                    label: temp.filedName,
                    prop: temp.key
                  };
                }
    
              } else if (temp.filedType == '1') {
                var selectData = [];
                for (var i = 0; i < temp.value.length; i++) {
                  selectData.push({
                    label: temp.value[i],
                    value: temp.value[i]
                  })
                }
                if (temp.isSearch == '0') {
                  temp2 = {
                    type: 'select',
                    label: temp.filedName,
                    prop: temp.key,
                    search: true,
                    dicData: selectData
                  };
                } else {
                  temp2 = {
                    type: 'select',
                    label: temp.filedName,
                    prop: temp.key,
                    dicData: selectData
                  };
                }
    
              } else if (temp.filedType == '2') {
                var selectData = [];
                for (var i = 0; i < temp.value.length; i++) {
                  selectData.push({
                    label: temp.value[i],
                    value: temp.value[i]
                  })
                }
                if (temp.isSearch == '0') {
                  temp2 = {
                    type: 'select',
                    searchMultiple: true,
                    label: temp.filedName,
                    prop: temp.key,
                    search: true,
                    dicData: selectData
                  };
                } else {
                  temp2 = {
                    type: 'select',
                    searchMultiple: true,
                    label: temp.filedName,
                    prop: temp.key,
                    dicData: selectData
                  };
                }
    
              } else if (temp.filedType == '3') {
                if (temp.isSearch == '0') {
                  temp2 = {
                    type: 'date',
                    label: temp.filedName,
                    prop: temp.key,
                    search: true
                  };
                } else {
                  temp2 = {
                    type: 'date',
                    label: temp.filedName,
                    prop: temp.key
                  };
                }
              } else {
                if (temp.isSearch == '0') {
                  temp2 = {
                    type: 'datetimerange',
                    label: temp.filedName,
                    prop: temp.key,
                    search: true,
                    searchRange: true,
                  };
                } else {
                  temp2 = {
                    type: 'datetimerange',
                    label: temp.filedName,
                    prop: temp.key,
                    searchRange: true
                  };
                }
              }
              console.log(temp2)
              tableOption.column.push(
                temp2
              )
            }
          }
        })
      }
    }
    

    总的来说,自定义列感觉用elementui来做并不是很难,但是还有一个问题,就是自定义列的搜索功能。这个功能至今我还没有一个比较好的解决方法。。。如果有大神看到的话,可以指导一下吗?

    展开全文
  • 主要介绍了layui动态表头的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • layui动态表头

    千次阅读 2019-01-14 22:01:04
    layui动态表头客户端HTML代码客户端JS代码 客户端HTML代码 &amp;amp;amp;amp;amp;amp;lt;!--表格--&amp;amp;amp;amp;amp;amp;gt; &amp;amp;amp;amp;amp;amp;lt;table class=&amp;amp;amp;amp;amp;...
  • 主要介绍了vue element 中的table动态渲染实现(动态表头),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • WPF动态类动态表头实现排序 采用了动态类的表格我们要显示排序的话也需要使用反射来实现,关键代码如下: private void TextBlockMouseLeftButtonDown(object sender, MouseButtonEventArgs e) { TextBlock text...
  • 知识:easyPOI动态表头

    2020-07-19 10:19:04
    数据不是一成不变的,表格数据的表头也是可删可减,这个时候怎么处理动态表头呢(此处动态表头的数据来自与后端查询所得数据 说明:没有使用过这个注解,网坛上有人说,这个只是隐藏好像还是会导出,这个光荣而又...
  • easyexcel 复杂表头、动态表头、复杂数据导出easyexcel 生成动态复杂表头+数据填充实现代码生成效果图 easyexcel 生成动态复杂表头+数据填充 实现代码 @Test public void test() throws IOException { // 文件...
  • element-ui 可编辑表格 + 动态表头

    万次阅读 2018-09-17 20:15:26
    Element-UI 可编辑表格 + 动态表头 利用el-table-column的自定义列模板可以与其他组件使用实现复杂的表格。 由于我想实现一个可编辑的表格,同时因为表格有很多个,同时列名也是不一样的(数量和名称),所以想偷...
  • WPF表格控件动态表头

    2019-12-02 10:58:53
    WPF表格控件动态表头 表格最方便的地方就是可以绑定数据源列表直接用来显示数据,但如果表头是不固定的就不太好实现这个,我这里采用的是动态类加动态插入表头的方法来实现,其中动态类的关键代码如下: public ...
  • * 动态表头配置 * @Ace * */ //动态表头 export const colSelect = [ { 'label':'案件名称', 'prop':'caseName', 'minWidth':150, 'align':'center' },{ 'label':'办案部门', 'prop':'name', 'align':'...
  • Siverlight DataGrid动态表头
  • 主要介绍了javascript实现动态表头及表列的展现方法,涉及javascript动态操作table元素的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • 问题描述ant-design表头数据是请求后台得到后,再请求table内容时,内容数据条数正常,但内容显示为空格,如果不是请求得到则显示正常(请求表table内容前,表头已正常显示);问题出现的环境背景及自己尝试过哪些方法...
  • easypoi导出动态表头excel1: springBoot项目maven依赖:cn.afterturneasypoi-spring-boot-starter4.1.2根据自己的poi版本选择cn.afterturneasypoi-spring-boot-starter3.3.0测试导出(数据组装如下):@Testpublic ...
  • ASP设置动态表头

    2017-12-05 14:10:14
    /// /// 设置动态表头 /// /// <param name="sender"></param> /// <param name="e"></param> protected void ColumsChange(object sender, GridViewRowEven
  • 3,导出excel的表头是多级的怎么实现 4,导出的sheet命名不规范报错 public static String excelSheetName(String str) { if (StringUtils.isBlank(str)){ str = String.valueOf(System.currentTimeMillis());...
  • 动态表头.

    2020-12-26 11:55:08
    DataTables 能不能动态改变列的个数? 比如说. 我有一个button, 第一次点击的时候, 抓取到的数据有5列. 当我修改执行条件后, 第二次点击button, 抓取到的数据就有2列. 经过测试, 我使用的方式是, 手动修改 标签. 里...
  • 通过在vue中使用element的table表格,实现数据动态渲染,并且动态渲染表头。通过在父组件中引入子组件表格,然后向子组件传递表格数据和表头数据。子组件table中template模板:data="this.tableData"height="400px...
  • 主要介绍了Vue+Element ui 根据后台返回数据设置动态表头操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 今天小编就为大家分享一篇layui table动态表头 改变表格头部 重新加载表格的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • jeecgBoot基于easyPoi非注解方式下载动态表头模板及数据 easyPoi非注解动态表头下载 easyPoi动态表头下载 easyPoi非注解动态表头
  • bsgrid动态表头(动态列)

    千次阅读 2017-06-08 17:14:16
    表格插件:bsgrid ...代码://动态表头 $("#types").change(function () { //清除表格数据 gridObj.clearGridBodyData(); //删除第2列 var $tr = $('#list_table tr'); $tr.find('th:eq(1)').remov
  • 今天小编就教大家制作一个动态表头,只要修改一个表格,其他所有的表格一起跟着改了,这样操作起来方便,省时省力。具体操作步骤:第一步:新建一工作表,命名为【初始化】,输入表头信息(如下图...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,274
精华内容 909
关键字:

动态表头