精华内容
下载资源
问答
  • 上篇文章写了如何在处理单列相同数据时让相同的项进行自动合并, 如果有多列合并的需求我们也应该可以从容应对...(产品: 你们看我干嘛?)废话不多说 上代码HTMLJSvar Main = {data() {return {tableData6: [{name: '...

    上篇文章写了如何在处理单列相同数据时让相同的项进行自动合并, 如果有多列合并的需求我们也应该可以从容应对...

    (产品: 你们看我干嘛?)

    废话不多说 上代码

    HTML

    JS

    var Main = {

    data() {

    return {

    tableData6: [{

    name: '部门1',

    type: 0,

    amount1: '跟单员1',

    amount2: '成衣工厂1',

    amount3: 10

    }, {

    name: '部门1',

    type: 0,

    amount1: '跟单员1',

    amount2: '成衣工厂2',

    amount3: 12

    }, {

    name: '部门1',

    type: 0,

    amount1: '跟单员1',

    amount2: '成衣工厂3',

    amount3: 9

    }, {

    name: '部门1',

    type: 0,

    amount1: '跟单员2',

    amount2: '成衣工厂1',

    amount3: 17

    }, {

    name: '部门1',

    type: 0,

    amount1: '跟单员2',

    amount2: '成衣工厂2',

    amount3: 15

    },{

    name: '部门1',

    type: 0,

    amount1: '跟单员2',

    amount2: '成衣工厂3',

    amount3: 10

    }, {

    name: '部门1总计',

    type: 1,

    amount1: '部门1跟单员',

    amount2: '',

    amount3: 12

    },{

    name: '部门2',

    type: 0,

    amount1: '跟单员3',

    amount2: '成衣工厂1',

    amount3: 10

    }, {

    name: '部门2',

    type: 0,

    amount1: '跟单员3',

    amount2: '成衣工厂2',

    amount3: 12

    }, {

    name: '部门2',

    type: 0,

    amount1: '跟单员3',

    amount2: '成衣工厂3',

    amount3: 9

    }, {

    name: '部门2',

    type: 0,

    amount1: '跟单员3',

    amount2: '成衣工厂1',

    amount3: 17

    }, {

    name: '部门2',

    type: 0,

    amount1: '跟单员4',

    amount2: '成衣工厂2',

    amount3: 15

    },{

    name: '部门2',

    type: 0,

    amount1: '跟单员4',

    amount2: '成衣工厂3',

    amount3: 10

    }, {

    name: '部门2总计',

    type: 1,

    amount1: '部门2跟单员',

    amount2: '',

    amount3: 12

    }],

    arr1:[],

    arr2:[]

    };

    },

    created() {

    this.setdates(this.tableData6)

    },

    methods: {

    setdates(arr) {

    var obj = {},

    k, arr1 = [];

    for(var i = 0, len = arr.length; i < len; i++) {

    k = arr[i].name;

    if(obj[k])

    obj[k]++;

    else

    obj[k] = 1;

    }

    console.log(obj)

    //保存结果{el-'元素',count-出现次数}

    for(var o in obj) {

    for(let i=0;i

    if(i===0){

    this.arr1.push(obj[o])

    }else{

    this.arr1.push(0)

    }

    }

    }

    console.log(this.arr1);

    var obj2 = {},

    j,arr2=[];

    for(var i = 0, len = arr.length; i < len; i++) {

    k = arr[i].amount1;

    if(obj2[k])

    obj2[k]++;

    else

    obj2[k] = 1;

    }

    console.log(obj2)

    //保存结果{el-'元素',count-出现次数}

    for(var o in obj2) {

    for(let i=0;i

    if(i===0){

    this.arr2.push(obj2[o])

    }else{

    this.arr2.push(0)

    }

    }

    }

    console.log(this.arr2);

    },

    arraySpanMethod({ row, column, rowIndex, columnIndex }) {

    if (rowIndex % 2 === 0) {

    if (columnIndex === 0) {

    return [1, 2];

    } else if (columnIndex === 1) {

    return [0, 0];

    }

    }

    },

    objectSpanMethod({ row, column, rowIndex, columnIndex }) {

    if (columnIndex === 0 && this.tableData6[rowIndex].type == 0) {

    let _row = this.arr1[rowIndex]

    let _col = this.arr1[rowIndex] > 0 ? 1 : 0

    return [_row,_col]

    }else if(columnIndex === 0 && this.tableData6[rowIndex].type == 1){

    return [1,3]

    }else if (columnIndex === 1 && this.tableData6[rowIndex].type == 1){

    return [0,0]

    }else if (columnIndex === 2 && this.tableData6[rowIndex].type == 1){

    return [0,0]

    }else if (columnIndex === 1 && this.tableData6[rowIndex].type == 0){

    let _row = this.arr2[rowIndex]

    let _col = this.arr2[rowIndex] > 0 ? 1 : 0

    return [_row,_col]

    }

    }

    }

    };

    var Ctor = Vue.extend(Main)

    new Ctor().$mount('#app')

    最终效果

    0b3979b2485a1dcd42933afd63e2271c.png

    展开全文
  • 多列合并1.在el-table中添加:span-method="objectSpanMethod"属性来控制合并单元格,如下图2.合并代码,每一列都要设置一个不同的key,这样可以防止合并的时候上下内容一样导致错误的问题objectSpanMethod({ row, ...

    一.多列合并

    1.在el-table中添加:span-method="objectSpanMethod"属性来控制合并单元格,如下图

    2.合并代码,每一列都要设置一个不同的key,这样可以防止合并的时候上下内容一样导致错误的问题

    objectSpanMethod({ row, column, rowIndex, columnIndex }) {

    if (columnIndex === 0) {

    if (this.myObj[row.channel_type].start === rowIndex) {

    return {

    rowspan: this.myObj[row.channel_type].step,

    colspan: 1

    };

    } else {

    return {

    rowspan: 0,

    colspan: 0

    };

    }

    }

    if (columnIndex === 1) {

    if (

    this.myObj_two[row.channel_name_chinese + row.channel_type].start ===

    rowIndex

    ) {

    return {

    rowspan: this.myObj_two[row.channel_name_chinese + row.channel_type]

    .step,

    colspan: 1

    };

    } else {

    return {

    rowspan: 0,

    colspan: 0

    };

    }

    }

    },

    // 合并单元格第一列

    resolveData(arr) {

    var obj = {};

    arr.forEach((val, key) => {

    if (!obj[val.channel_type]) {

    obj[val.channel_type] = {

    start: key,

    step: 1

    };

    } else {

    obj[val.channel_type].step++;

    }

    });

    this.myObj = obj;

    console.log(obj);

    },

    // 合并单元格第二列

    resolveData_two(arr) {

    var obj = {};

    arr.forEach((val, key) => {

    if (!obj[val.channel_name_chinese + val.channel_type]) {

    obj[val.channel_name_chinese + val.channel_type] = {

    start: key,

    step: 1

    };

    } else {

    obj[val.channel_name_chinese + val.channel_type].step++;

    }

    });

    this.myObj_two = obj;

    console.log(this.myObj_two, "this.myObj");

    },

    3.需要调用一下下面两个函数,data为你所获取的所有数据

    this.resolveData_two(data);

    this.resolveData(data);

    4.合并结果如下图

    到此这篇关于vue单元格多列合并的实现的文章就介绍到这了,更多相关vue单元格多列合并内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    展开全文
  • 但是我们经常需要把单元格的内容合并在一起。这时候怎么操作呢?今天给大家介绍3个方法:1用&连接文本& 也就是U和Y上方的按键,在Excel中可以用来连接文本。我们在“countif函数详解”里面提到过。今天...

    Excel中有个合并单元格的功能,但是这个功能有个弊端,就是只会保留左上角单元格的内容,其他单元格的内容就会被删除。

    但是我们经常需要把多个单元格的内容合并在一起。这时候怎么操作呢?

    今天给大家介绍3个方法:

    1用&连接文本

    & 也就是U和Y上方的按键,在Excel中可以用来连接文本。我们在“countif函数详解”里面提到过。

    今天来详细说说怎么用&来连接文本。

    63146121_1

    在B1输入 =A1&A2&A3&A4,回车。

    发现B1的内容就是A1到A4的内容。

    如果每句歌词之间用空格隔开,公式应该怎么写呢?

    不是输入 =A1 & A2 & A3 &A4,这样是没有效果的。

    而应该是 =A1& ' ' &A2& ' ' &A3& ' ' &A4,因为空格也是文本,所以空格要用英文的双引号引起来,才能形成想要的效果。

    63146121_2

    所以用&直接连接文本内容,而不是连接单元格的时候,必须要把文本内容用英文双引号连接起来。

    当然大家可以看到用&连接是比较低效的,如果需要连接的单元格比较少,用这个方法很便利。2concatenate 函数

    下面用concatenate函数来演示,这个函数名比较复杂,不过我们输入=con就会看到Excel提供的函数提示第一个就是,双击就可以了。

    63146121_3

    B3 =concatenate(A1,A2,A3,A4),搞定。

    同样的问题,如果每句歌词之间用空格隔开,公式应该怎么写呢?

    大家可以想到的:=concatenate(A1,' ',A2,' ',A3,' ',A4)

    63146121_43F9转换成数组

    最后介绍的这个方法很有趣,通过F9按键来实现。F9可以刷新公式计算结果;还可以查看公式某一部分的计算结果

    63146121_5

    这个是有一些步骤的:

    1、在B5输入 =A1:A4,别急着敲回车键,而是按下F9按键;

    2、可以看到B5的内容变成了={'以为梦见你离开';'我从哭泣中醒来';'看夜风吹过窗台';'你能否感受我的爱'},还别急着回车;

    3、把={、冒号、引号这些不需要的符号删除;

    4、最后再爽快的敲下回车键,搞定。

    展开全文
  • //创建单元格 }else {//该不需要合并//数据 XSSFCell cell =row.createCell(j); cell.setCellValue(content); } j++; } }//将最后一份存入 if(poiModels != null && poiModels.size() != 0) {for(Integer key : ...

    importjava.io.FileOutputStream;importjava.io.IOException;importjava.text.DecimalFormat;importjava.util.Collections;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importjava.util.regex.Pattern;importorg.apache.poi.ss.usermodel.HorizontalAlignment;importorg.apache.poi.ss.util.CellRangeAddress;importorg.apache.poi.xssf.usermodel.XSSFCell;importorg.apache.poi.xssf.usermodel.XSSFCellStyle;importorg.apache.poi.xssf.usermodel.XSSFRow;importorg.apache.poi.xssf.usermodel.XSSFSheet;importorg.apache.poi.xssf.usermodel.XSSFWorkbook;importpoiExcel.model.MergeModel;public classExportExcel {/*** 创建excel文件

    *@paramobjData 数据

    *@paramfileName 文件名

    *@paramsheetName sheet名

    *@paramcolumns 表头

    *@parammergeIndex 需要合并的列号集合

    *@return

    */

    public static int exportToExcelForXlsx(List> objData,String fileName, String sheetName, List columns,List mergeIndex,booleanisTree) {int flag = 0;

    Collections.sort(mergeIndex);//将列号排序//创建工作薄

    XSSFWorkbook wb = newXSSFWorkbook();//sheet1

    XSSFSheet sheet1 =wb.createSheet(sheetName);//设置样式

    XSSFCellStyle style =wb.createCellStyle();

    style.setAlignment(HorizontalAlignment.CENTER);//水平对齐//表头

    sheet1.createFreezePane(0, 1);//冻结表头

    XSSFRow sheet1row1 = sheet1.createRow((short) 0);

    sheet1row1.setHeight((short) 480);//写入表头

    if (columns != null && columns.size() > 0) {for(int i=0;i

    String column=columns.get(i);//列

    XSSFCell cell =sheet1row1.createCell(i);

    cell.setCellValue(column);

    }

    }int dataSatrtIndex = 1;//数据开始行

    boolean isMerge = false;if(mergeIndex != null && mergeIndex.size() != 0) {

    isMerge= true;

    }//写入数据

    if (objData != null && objData.size() > 0) {

    Map poiModels = new HashMap();//循环写入表中数据

    int i = 0;for ( ; i < objData.size(); i++) {//数据行

    XSSFRow row = sheet1.createRow((short) (i+dataSatrtIndex));//行内循环,既单元格(列)

    List list =objData.get(i);

    DecimalFormat decimalFormat= new DecimalFormat("0.00");int j = 0;for(Object o : list) {//数据列

    String content = "";if(o != null) {if (o.toString().contains(".") &&isNumeric(o.toString())) {

    content=decimalFormat.format(Float.valueOf(o.toString()));

    }else if (o.toString().contains("-") && o.toString().contains(":")) {

    content= String.valueOf(o).split("\\.")[0];

    }else{

    content=String.valueOf(o);

    }

    }if(isMerge &&mergeIndex.contains(j)) {//如果该列需要合并

    MergeModel poiModel =poiModels.get(j);if(poiModel == null) {

    poiModel= newMergeModel();

    poiModel.setContent(content);

    poiModel.setRowIndex(i+dataSatrtIndex);

    poiModel.setCellIndex(j);

    poiModels.put(j, poiModel);

    }else{if(!poiModel.getContent().equals(content)) {//如果不同了,则将前面的数据合并写入

    if(isTree){//此列向后的所有列都进行一次写入合并操作,并清空。//树结构中存在这种情况,a目录和b目录为同级目录,a目录下最后一个子目录和b目录下的第一个子目录名称相同,防止本来不应该合并的单元格被合并

    addMergedRegionValue(sheet1,poiModels,mergeIndex,i +dataSatrtIndex,poiModel.getCellIndex());

    }else{

    XSSFRow lastRow=sheet1.getRow(poiModel.getRowIndex());

    XSSFCell lastCell= lastRow.createCell(poiModel.getCellIndex());//创建列

    lastCell.setCellValue(poiModel.getContent());//合并单元格

    if(poiModel.getRowIndex() != i + dataSatrtIndex - 1) {

    sheet1.addMergedRegion(new CellRangeAddress(poiModel.getRowIndex(), i + dataSatrtIndex - 1, poiModel.getCellIndex(), poiModel.getCellIndex()));

    }

    }//将新数据存入

    poiModel.setContent(content);

    poiModel.setRowIndex(i+dataSatrtIndex);

    poiModel.setCellIndex(j);

    poiModels.put(j, poiModel);

    }

    }

    row.createCell(j);//创建单元格

    }else {//该列不需要合并//数据列

    XSSFCell cell =row.createCell(j);

    cell.setCellValue(content);

    }

    j++;

    }

    }//将最后一份存入

    if(poiModels != null && poiModels.size() != 0) {for(Integer key : poiModels.keySet()) {

    MergeModel poiModel=poiModels.get(key);

    XSSFRow lastRow=sheet1.getRow(poiModel.getRowIndex());

    XSSFCell lastCell=lastRow.getCell(poiModel.getCellIndex());

    lastCell.setCellValue(poiModel.getContent());//合并单元格

    if(poiModel.getRowIndex() != i + dataSatrtIndex -1) {

    sheet1.addMergedRegion(new CellRangeAddress(poiModel.getRowIndex(), i + dataSatrtIndex - 1, poiModel.getCellIndex(), poiModel.getCellIndex()));

    }

    }

    }

    }else{

    flag= -1;

    }//设置固定列宽,poi的列宽设置有点操蛋,大概规律网上有不少版本自行百度//这里大概是143像素

    for (int i = 0; i < columns.size(); i++) {

    sheet1.setColumnWidth(i,4550);

    }

    FileOutputStream out= null;try{

    out= new FileOutputStream("E:\\" + fileName + ".xlsx");

    wb.write(out);

    }catch(Exception ex) {try{

    out.flush();

    out.close();

    }catch(IOException e){

    flag = 0;

    e.printStackTrace();

    }

    }returnflag;

    }/*** 判断是不是数字

    *@paramstr

    *@return

    */

    private static booleanisNumeric(String str){if(str == null || str.length() == 0) {return false;

    }

    Pattern pattern= Pattern.compile("^[-\\+]?[\\d]*$");returnpattern.matcher(str).matches();

    }private static void addMergedRegionValue(XSSFSheet sheet,Map poiModels,List mergeIndex,int nowRowIndex,intnowCellIndex){if(poiModels != null && poiModels.size() != 0 && mergeIndex != null && mergeIndex.size() != 0){for(Integer index : mergeIndex){if(index >=nowCellIndex){

    MergeModel poiModel= poiModels.remove(index);//删除并获取value

    if(poiModel != null){

    XSSFRow lastRow=sheet.getRow(poiModel.getRowIndex());

    XSSFCell lastCell= lastRow.createCell(poiModel.getCellIndex());//创建列

    lastCell.setCellValue(poiModel.getContent());//合并单元格

    if(poiModel.getRowIndex() != nowRowIndex - 1) {

    sheet.addMergedRegion(new CellRangeAddress(poiModel.getRowIndex(), nowRowIndex - 1, poiModel.getCellIndex(), poiModel.getCellIndex()));

    }

    }

    }

    }

    }

    }

    }

    展开全文
  • 合并多单元格内容的设置方法:1、如图表格,想把ABCD的内容合并到一个单元格里,如果数据不,可利用连字符,公式==A2&B2&C2&D2。2、如果数据很,用连字符不方便,可在菜单栏...
  • 有时候需求就比较奇葩 要实现这种基本的表格很...我遇到的需求就是要去合并多列相同的元素,并且跟前面相互照应 如果按照官方的方式是不可能实现这种效果的 上代码 <el-table :data="tableData" width="100%
  • 合并原理都在其中讲了,该篇文章不讲原理,只是添加了合并和将上篇文章的问题修改后做了整理和稍作修改(为了支持列合并)。 目录 AbstractGenericMergeStrategy是抽象的通用合并策略 列合并合并 其它...
  • 在工作或生活中,对于小批量的数据我们习惯用Excel来处理,经常可能会面临这样的问题——如何把单元格数据合并到一个单元格。实现这一效果的方式有很种,比如CONCATENATE函数、连接符&、PHONETIC函数等等...
  • EXCEL第一列内容相同的,第二列单元格内容相应合并在同一个单元格Excel 问题描述抽取第一列中的相同内容抽取第二列内容道绿框中第二列 Excel 问题描述 红色框是原始的数据,我的目的是想要通过红色框的转换成绿色框...
  • 需求:不仅仅是左侧列的合并还有中间以及尾部列单元格合并,饿了么官方目前只有起始列的合并案例 实现效果如图所示:>> 合并行-列的代码封装: 提示:这里描述项目中遇到的问题: 例如:数据传输过程中...
  • 关于QTableWidget中单元格合并

    千次阅读 2021-01-07 20:02:19
    无意中发现了Qt中QTableWidget可以实现单元格合并,函数为setSpan,函数原型如下: void QTableView::setSpan(int row, int column, int rowSpanCount, int columnSpanCount) 参数为:行数、数、需要合并的行...
  • // 对不需要合并增加rowSpan属性 oldThs.each(function() { if($(this).attr("colSpan") == 1) { $(this).attr("rowSpan", 2); } }); varjqBody = $(this); // 绑定拖动事件 $(document).bind(...
  • =CONCATENATE(A1,B1,C1)我们通常都使用函数“CONCATENATE”合并两列数据。只要在目标单元格(假设是C1)中输入“=CONCATENATE(A1,B1)”,就可以把A2与B2两个单元格内...A和B列为原数据,C列为合并单元格后的数据,我...
  • 如何将单元格内容快速合并到一起该标题应分为两种情况:1)简单合并单元格内容;2)合并相似的项目;简单的合并实际上可以使用文本连接器[&],也可以先将其复制到WORD,然后再复制出来,但是还有两种非常实用的...
  • 详细内容今天在工作中,老板给我一个任务,把excel表格中的多列数据合并到一列中。数据如下:注意:数据从16601到20000,也就是说有两千个网址。下面为大家介绍几种方法:第一种:使用wps自带函数1、在公示选项卡下...
  • JTable单元格合并AAA

    2021-02-12 23:39:18
    第一个方法返回一个单元格的边界(Rectangle类),第二、三个方法分别返回屏幕指定位置的和行。swing components 是使用ComponentUI对象来完成渲染的。所以我们需要找出渲染Jtable的Component...
  • 将excel表格中某行两列或者多列单元格内容合并到一个新的列中 方法一:使用&符号连接单元格内容 如下表: 如果需要加空格或者分隔符,则在&符号前加空格或者分隔符 方法二:Office剪贴板复制...
  • 那么只要把此方法写在【合计】前方就好// 合并【学员姓名】之前相同的列表mergeContent(sheet);// 合计// ......private void mergeContent(XSSFSheet sheet) {boolean flag = false;int index = 0;in...
  • 其中用鼠标操作共有三个选项,分别为合并后居中、跨越合并和单元格合并,它们之间有区别,具体区别在实例后分享;用快捷键可分为两种情况,一种用Excel默认的快捷键,另一种用智能快捷键。除合并单元格外,还可以...
  • easyexcel 合并单元格

    千次阅读 2020-12-19 07:42:15
    easyexcel合并单元格*********************相关注解ContentLoopMerge:标注在字段上@Target({ElementType.FIELD})@Retention(RetentionPolicy.RUNTIME)@Inheritedpublic @interface ContentLoopMerge {int eachRow()...
  • 先确定是跨行还是跨列合并--> <!--2.找到目标单元格,写上合并方式=合并单元格数量,比如:<tdcolspan=""></td>--> <!--3.删除多余的单元格--> <tablewidth="500"height="249...
  • 合并单元格 @param target 目标表格对象 @param data 原始数据(在服务端完成排序) @param fieldName 合并参照的属性名称 @param fieldList 要合并的字段集合[不含fieldName]![] @param colspan 合并开始 */ ...
  • merge获取现有单元格合并它们,而write_merge则编写标签(就像write),然后执行merge所做的相同操作。两者都将要合并单元格作为r1, r2, c1, c2,并接受可选的style参数。从您的示例来看,这是最简单的调用:sheet...
  • function _w_table_rowspan(_w_table_id,_w_table_colnum){... } 以上就是JS前端合并TABLE相同单元格的方法的详细内容,更请关注php中文网其它相关文章! 本文原创发布php中文网,转载请注明出处,感谢您的尊重!
  • layui实现表格单元格合并的方法

    千次阅读 2020-12-24 05:17:57
    layui实现表格单元格合并的方法发布时间:2020-06-11 11:38:01来源:亿速云阅读:337这篇文章主要介绍了layui实现表格单元格合并的方法,具有一定借鉴价值,需要的朋友可以参考下。如下资料是关于layui实现表格...
  • excel怎么合并单元格方法今天有网友在QQ上问了笔者一个excel合并单元格的问题,找不到怎么合并了。下面针对这个问题,笔者今天就把“excel怎么合并单元格”的方法和步骤详细的说下,希望对那些刚用excel软件还不太...
  • 在 HTML中,可以使用属性 rowspan来合并行,即合并纵向的个相邻单元格。 rowspan的属性值填写的是数字,你要合并单元格有几个,就写几。 注意:我们在合并单元格的时候,如果被合并单元格有内容,虽然不会...
  • 【论述题】作业要求: 请从马克思主义经典作家(马、恩、、毛、邓、习)的著述中选定一篇认真阅读,并写出心得体会(字数1200字,上下200字之间。请注明净字数。) 文章标题自拟(可用双标题)。用A4纸,两面抄写。 截止第4...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 39,772
精华内容 15,908
关键字:

多列单元格分别合并