精华内容
下载资源
问答
  • 如何纵向合并单元格
    2022-04-01 14:11:57
    /// <summary>
            /// Excel转DataTable
            /// </summary>
            /// <param name="filePath">excel文件路径</param>
            /// <returns></returns>
            public static DataTable ExcelToTable(string filePath)
            {
                DataTable dt = new DataTable();
                using (FileStream fsRead = System.IO.File.OpenRead(filePath))
                {
                    IWorkbook wk = null;
                    //获取后缀名
                    string extension = filePath.Substring(filePath.LastIndexOf(".")).ToString().ToLower();
                    //判断是否是excel文件
                    if (extension == ".xlsx" || extension == ".xls")
                    {
                        //判断excel的版本
                        if (extension == ".xlsx")
                        {
                            wk = new XSSFWorkbook(fsRead);
                        }
                        else if (extension == ".xls")
                        {
                            wk = new HSSFWorkbook(fsRead);
                        }
    
                        //获取第一个sheet
                        ISheet sheet = wk.GetSheetAt(0);
                        //获取第一行为标题
                        IRow headrow = sheet.GetRow(0);
    
                        //创建列
                        for (int i = headrow.FirstCellNum; i < headrow.Cells.Count; i++)
                        {
                            ICell cell = headrow.GetCell(i);
                            if (cell.ToString() != null && cell.ToString() != string.Empty)
                            {
                                dt.Columns.Add(cell.ToString());
                            }
                            else
                            {
                                dt.Columns.Add(new DataColumn("Columns" + i.ToString()));//标题没有名字的添加名字
                            }
    
                        }
                        //读取每行,从第二行起
                        for (int r = 1; r <= sheet.LastRowNum; r++)
                        {
                            DataRow dr = dt.NewRow();
                            //获取当前行
                            IRow row = sheet.GetRow(r);
    
                            int recordNullCount = 0;
                            //读取每列
                            for (int j = 0; j < headrow.Cells.Count; j++)
                            {
                                ICell cell = row.GetCell(j); //一个单元格
                                if (cell != null && cell.IsMergedCell && r > 1)  //检测列的单元格是否合并
                                {
                                    dr[j] = dt.Rows[r - 2][j];
                                }
                                else
                                {
                                    dr[j] = GetCellValue(cell); //获取单元格的值
                                    //if (string.IsNullOrWhiteSpace(dr[j].ToString()) && j > 0)//横向合并
                                    //{
                                    //    dr[j] = dr[j - 1];
                                    //}
                                }
                                if (dr[j].ToString() == null || dr[j].ToString() == "")//全为空则不取
                                {
                                    recordNullCount += 1;
                                }
                                if (dr[j].ToString() == "统计" || dr[j].ToString() == "合计")//如果是统计行就直接break掉
                                {
                                    recordNullCount = dt.Columns.Count;
                                    break;
                                }
                            }
                            if (recordNullCount == dt.Columns.Count)
                            {
                                break;
                            }
                            else
                            {
                                dt.Rows.Add(dr); //把每行追加到DataTable
                            }
    
                        }
    
                    }
    
                }
                return dt;
            }
    
            /// <summary>
            /// 对单元格进行判断取值
            /// </summary>
            /// <param name="cell"></param>
            /// <returns></returns>
            private static string GetCellValue(ICell cell)
            {
                if (cell == null)
                    return string.Empty;
                switch (cell.CellType)
                {
                    case CellType.Blank: //空数据类型 这里类型注意一下,不同版本NPOI大小写可能不一样,有的版本是Blank(首字母大写)
                        return string.Empty;
                    case CellType.Boolean: //bool类型
                        return cell.BooleanCellValue.ToString();
                    case CellType.Error:
                        return cell.ErrorCellValue.ToString();
                    case CellType.Numeric: //数字类型
                        cell.SetCellType(CellType.Numeric);
                        if (HSSFDateUtil.IsCellDateFormatted(cell))//日期类型
                        {
                            return cell.DateCellValue.ToString("yyyy-MM-dd HH:mm:ss"); //如果内容是时间格式转成这种格式
                        }
                        else //其它数字
                        {
                            return cell.NumericCellValue.ToString();
                        }
                    case CellType.Unknown: //无法识别类型
                    default: //默认类型
                        return cell.ToString();//
                    case CellType.String: //string 类型
                        {
                            cell.SetCellType(CellType.String);
                            if (cell.IsMergedCell)
                            {
    
                            }
                            return cell.StringCellValue;
                        }
    
                    case CellType.Formula: //带公式类型
                        try
                        {
                            if (DateUtil.IsCellDateFormatted(cell))//日期类型
                            {
                                return cell.DateCellValue.ToString("yyyy-MM-dd HH:mm:ss"); //如果内容是时间格式转成这种格式
                            }
                            else
                            {
                                HSSFFormulaEvaluator e = new HSSFFormulaEvaluator(cell.Sheet.Workbook);
                                e.EvaluateInCell(cell);
                                return cell.ToString();
                            }
    
                        }
                        catch
                        {
                            return cell.NumericCellValue.ToString();
                        }
                }
            }
    
    更多相关内容
  • TP5框架,使用PHPExcel导出可纵向合并单元格的excel表格,PHPExcel插件放在根目录下vendor文件夹内。 1、controller目录中控制器,Order.php <?php namespace app\index\controller; use app\index\model\...

    TP5框架,使用PHPExcel导出可纵向合并单元格的excel表格,PHPExcel插件放在根目录下vendor文件夹内。
    1、controller目录中控制器,Order.php

    <?php
    namespace app\index\controller;
    use app\index\model\ExcelDown; //excel导出
    class Order{
    	public function download(){
            //获取数据,并重组
            $w = [
    			['goods_name'=>'红提','member_id'=>9,'nickname'=>'小新','goods_num'=>1,'amount'=>'26.80','sort'=>1],
    			['goods_name'=>'海南绿橙','member_id'=>9,'nickname'=>'小新','goods_num'=>3,'amount'=>'108.00','sort'=>2],
    			['goods_name'=>'甘蔗','member_id'=>9,'nickname'=>'小新','goods_num'=>1,'amount'=>'25.60','sort'=>3],
    			['goods_name'=>'海南绿橙','member_id'=>10,'nickname'=>'小白','goods_num'=>1,'amount'=>'36.00','sort'=>4],
    			['goods_name'=>'红枣','member_id'=>11,'nickname'=>'大熊','goods_num'=>2,'amount'=>'18.80','sort'=>5],
    			['goods_name'=>'芒果','member_id'=>17,'nickname'=>'胖虎','goods_num'=>3,'amount'=>'45.90','sort'=>6],
    			['goods_name'=>'山竹','member_id'=>17,'nickname'=>'胖虎','goods_num'=>2,'amount'=>'28.00','sort'=>7]
    		];
            // print_r($w);exit;
    
            //excel表参数
            $data = array(
                'letter'=>array('A','B','C','D','E','F'),
                'width'=>array('6','20','14','20','15','10'),
                'header'=>array('序号','昵称','累计下单数','商品名称','数量','支付金额'),
                'sheetname'=>'购买记录表',
                'filename'=>'购买记录表(' . date('Ymd') . ').xls',
                'field'=>array('sort','nickname','order_num','goods_name','goods_num','amount'), //数据字段名
            );
    
            //导出数据
            $excelc = new ExcelDown();
            $res = $excelc->push($w,$data);
        }
    }
    ?>
    

    2、model中模型,ExcelDown.php

    <?php
    namespace app\index\model;
    use think\Model;
    use think\Db;
    class ExcelDown extends Model{
    	public function __construct(){
    		vendor("PHPExcel.PHPExcel"); //导入PHPExcel类库(文件路径:/excel/vendor/)
    	}
    	/**
    	 * 导出excel表格
    	 * @param array $res 要导出的数据
    	 * @param array $data 表格参数
    	 * @param string $imgPath 图片路径
    	 * @param array $imgLetter 图片要插入的表格列
    	 */
    	function push($res,$data,$imgPath='',$imgLetter=''){
    		$objPHPExcel = new \PHPExcel();
    		
    		//设置excel文件右键属性所显示的信息
    		$objPHPExcel->getProperties()->setCreator("xxx") //作者
    			->setLastModifiedBy("xxx")	//最后一次保存者
    			->setTitle("Office 2003 XLS Test Document") //标题
    			->setSubject("Office 2003 XLS Test Document") //主题
    			->setDescription("Test document for Office 2003 XLS, generated using PHP classes.") //描述
    			->setKeywords("office 2003 openxml php") //标注
    			->setCategory("Test result file"); //类别
    		 
    		//设置列宽
    		for($i=0;$i<count($data['letter']);$i++){
    			$objPHPExcel->getActiveSheet()->getColumnDimension($data['letter'][$i])->setWidth($data['width'][$i]);
    		}
    		
    		//设置行高度
    		$objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(18);
    		$objPHPExcel->getActiveSheet()->getRowDimension('2')->setRowHeight(18);
    		$objPHPExcel->getActiveSheet()->getRowDimension('3')->setRowHeight(18);
    		 
    		//设置字体大小
    		$objPHPExcel->getActiveSheet()->getDefaultStyle()->getFont()->setSize(10);
    		//设置字体粗体
    		$objPHPExcel->getActiveSheet()->getStyle('A3:'.end($data['letter']).'3')->getFont()->setBold(true);
    		//设置文字垂直居中
    		$objPHPExcel->getActiveSheet()->getStyle('A3:'.end($data['letter']).'3')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
    		//设置表格框线
    		$objPHPExcel->getActiveSheet()->getStyle('A1:'.end($data['letter']).'3')->getBorders()->getAllBorders()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);
    		 
    		//设置标题字体粗体
    		$objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true);
    		//设置标题字体大小
    		$objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setSize(12);
    		//设置标题文字水平居中
    		$objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    		//设置标题文字垂直居中
    		$objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
    		
    		//设置副标题水平居右
    		$objPHPExcel->getActiveSheet()->getStyle('A2')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
    		
    		//设置水平居中
    		for($i=0;$i<count($data['letter']);$i++){
    			$objPHPExcel->getActiveSheet()->getStyle($data['letter'][$i].'3')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    			$objPHPExcel->getActiveSheet()->getStyle($data['letter'][$i])->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    		}
    		 
    		//横向合并单元格
    		$objPHPExcel->getActiveSheet()->mergeCells('A1:'.end($data['letter']).'1');
    		$objPHPExcel->getActiveSheet()->mergeCells('A2:'.end($data['letter']).'2');
    		 
    		//设置表头内容
    		for($i=0;$i<count($data['letter']);$i++){
    			$objPHPExcel->setActiveSheetIndex(0)
    				->setCellValue('A1', $data['sheetname'])
    				->setCellValue('A2', '导出时间:' . date('Y-m-d H:i',time()))
    				->setCellValue($data['letter'][$i].'3', $data['header'][$i]);
    		}
    		
    		for($i=0;$i<count($res['goods']);$i++){
    			for($j=0;$j<count($data['letter']);$j++){
    				$objPHPExcel->getActiveSheet(0)->setCellValue($data['letter'][$j].($i+4),$res['goods'][$i][$data['field'][$j]]);
    			}
    			//设置文字垂直居中
    			$objPHPExcel->getActiveSheet()->getStyle('A'.($i+4).':'.end($data['letter']).($i+4))->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
    			//设置表格框线
    			$objPHPExcel->getActiveSheet()->getStyle('A'.($i+4).':'.end($data['letter']).($i+4))->getBorders()->getAllBorders()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);
    			//设置行高
    			$objPHPExcel->getActiveSheet()->getRowDimension($i+4)->setRowHeight(18);
    			//自动换行
    			$objPHPExcel->getActiveSheet()->getStyle('A'.($i+4).':'.end($data['letter']).($i+4))->getAlignment()->setWrapText(true);
    			
    			//纵向合并同一用户
    			if($i>=1 &&($res[$i]['member_id']==$res[$i-1]['member_id'])){
    				$objPHPExcel->getActiveSheet()->mergeCells('B'.($i+3).':B'.($i+4));
    				$objPHPExcel->getActiveSheet()->mergeCells('C'.($i+3).':C'.($i+4));
    			}
    		}
    
    		//设置工作表名称
    		$objPHPExcel->getActiveSheet()->setTitle($data['sheetname']);
    		
    		//将活动表索引设置为第一个表,因此Excel将作为第一个表打开此表
    		$objPHPExcel->setActiveSheetIndex(0);
    		
    		ob_end_clean(); //清除缓冲区,避免乱码
    		
    		// 将输出重定向到一个客户端web浏览器(Excel2007)
    		header('Content-Type: application/vnd.ms-excel');
    		header('Content-Disposition: attachment;filename='.$data['filename']);
    		header('Cache-Control: max-age=0');
    		
    		//要是输出为Excel2007,使用 Excel2007对应的类,生成的文件名为.xlsx。
    		//如果是Excel2003及以下,使用Excel5,对应生成.xls文件
    		//$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
    		$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    		
    		//支持浏览器下载生成的文档
    		$objWriter->save('php://output');
    		
    		//支持保存生成的文件在当前目录下,直接文件名做为参数
    		// $objWriter->save('test.xlsx');
    	}
    }
    ?>
    
    展开全文
  • 横向合并单元格.zip

    2021-08-12 12:02:07
    devexpress gridcontrol 横向合并单元格,字体自动换行
  • jqgrid合并单元格 .jqgrid { width: 80%; margin: 0 auto; } /* 这个代码是解决表头有一点点错位的问题 */ .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-...
  • TP5框架,使用PHPExcel导出可纵向合并单元格的excel表格,PHPExcel插件放在根目录下vendor文件夹内。 1、controller目录中控制器,Order.php <?php namespace app\index\controller; use app\index\model\...

    TP5框架,使用PHPExcel导出可纵向合并单元格的excel表格,PHPExcel插件放在根目录下vendor文件夹内。
    1、controller目录中控制器,Order.php

    <?php
    namespace app\index\controller;
    use app\index\model\ExcelDown; //excel导出
    class Order{
    	public function download(){
            //获取数据,并重组
            $w = [
    			['users']=>[
    				['nickname'=>'小新','member_id'=>9,'order_num'=>49,'list_num'=>3],
    				['nickname'=>'小白','member_id'=>10,'order_num'=>6,'list_num'=>1],
    				['nickname'=>'大熊','member_id'=>11,'order_num'=>17,'list_num'=>1],
    				['nickname'=>'胖虎','member_id'=>17,'order_num'=>9,'list_num'=>2]
    			],
    			['goods']=>[
    				['goods_name'=>'红提','nickname'=>'小新','goods_num'=>1,'amount'=>'26.80','sort'=>1],
    				['goods_name'=>'海南绿橙','nickname'=>'小新','goods_num'=>3,'amount'=>'108.00','sort'=>2],
    				['goods_name'=>'甘蔗','nickname'=>'小新','goods_num'=>1,'amount'=>'25.60','sort'=>3],
    				['goods_name'=>'海南绿橙','nickname'=>'小白','goods_num'=>1,'amount'=>'36.00','sort'=>4],
    				['goods_name'=>'红枣','nickname'=>'大熊','goods_num'=>2,'amount'=>'18.80','sort'=>5],
    				['goods_name'=>'芒果','nickname'=>'胖虎','goods_num'=>3,'amount'=>'45.90','sort'=>6],
    				['goods_name'=>'山竹','nickname'=>'胖虎','goods_num'=>2,'amount'=>'28.00','sort'=>7]
    			]
    		];
            // print_r($w);exit;
    
            //excel表参数
            $data = array(
                'letter'=>array('A','B','C','D','E','F'),
                'width'=>array('6','20','14','20','15','10'),
                'header'=>array('序号','昵称','累计下单数','商品名称','数量','支付金额'),
                'sheetname'=>'购买记录表',
                'filename'=>'购买记录表(' . date('Ymd') . ').xls',
                'field'=>array('sort','nickname','order_num','goods_name','goods_num','amount'), //数据字段名
            );
    
            //导出数据
            $excelc = new ExcelDown();
            $res = $excelc->push($w,$data);
        }
    }
    ?>
    

    2、model中模型,ExcelDown.php

    <?php
    namespace app\index\model;
    use think\Model;
    use think\Db;
    class ExcelDown extends Model{
    	public function __construct(){
    		vendor("PHPExcel.PHPExcel"); //导入PHPExcel类库(文件路径:/excel/vendor/)
    	}
    	/**
    	 * 导出excel表格
    	 * @param array $res 要导出的数据
    	 * @param array $data 表格参数
    	 * @param string $imgPath 图片路径
    	 * @param array $imgLetter 图片要插入的表格列
    	 */
    	function push($res,$data,$imgPath='',$imgLetter=''){
    		$objPHPExcel = new \PHPExcel();
    		
    		//设置excel文件右键属性所显示的信息
    		$objPHPExcel->getProperties()->setCreator("xxx") //作者
    			->setLastModifiedBy("xxx")	//最后一次保存者
    			->setTitle("Office 2003 XLS Test Document") //标题
    			->setSubject("Office 2003 XLS Test Document") //主题
    			->setDescription("Test document for Office 2003 XLS, generated using PHP classes.") //描述
    			->setKeywords("office 2003 openxml php") //标注
    			->setCategory("Test result file"); //类别
    		 
    		//设置列宽
    		for($i=0;$i<count($data['letter']);$i++){
    			$objPHPExcel->getActiveSheet()->getColumnDimension($data['letter'][$i])->setWidth($data['width'][$i]);
    		}
    		
    		//设置行高度
    		$objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(18);
    		$objPHPExcel->getActiveSheet()->getRowDimension('2')->setRowHeight(18);
    		$objPHPExcel->getActiveSheet()->getRowDimension('3')->setRowHeight(18);
    		 
    		//设置字体大小
    		$objPHPExcel->getActiveSheet()->getDefaultStyle()->getFont()->setSize(10);
    		//设置字体粗体
    		$objPHPExcel->getActiveSheet()->getStyle('A3:'.end($data['letter']).'3')->getFont()->setBold(true);
    		//设置文字垂直居中
    		$objPHPExcel->getActiveSheet()->getStyle('A3:'.end($data['letter']).'3')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
    		//设置表格框线
    		$objPHPExcel->getActiveSheet()->getStyle('A1:'.end($data['letter']).'3')->getBorders()->getAllBorders()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);
    		 
    		//设置标题字体粗体
    		$objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true);
    		//设置标题字体大小
    		$objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setSize(12);
    		//设置标题文字水平居中
    		$objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    		//设置标题文字垂直居中
    		$objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
    		
    		//设置副标题水平居右
    		$objPHPExcel->getActiveSheet()->getStyle('A2')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
    		
    		//设置水平居中
    		for($i=0;$i<count($data['letter']);$i++){
    			$objPHPExcel->getActiveSheet()->getStyle($data['letter'][$i].'3')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    			$objPHPExcel->getActiveSheet()->getStyle($data['letter'][$i])->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    		}
    		 
    		//横向合并单元格
    		$objPHPExcel->getActiveSheet()->mergeCells('A1:'.end($data['letter']).'1');
    		$objPHPExcel->getActiveSheet()->mergeCells('A2:'.end($data['letter']).'2');
    		 
    		//设置表头内容
    		for($i=0;$i<count($data['letter']);$i++){
    			$objPHPExcel->setActiveSheetIndex(0)
    				->setCellValue('A1', $data['sheetname'])
    				->setCellValue('A2', '导出时间:' . date('Y-m-d H:i',time()))
    				->setCellValue($data['letter'][$i].'3', $data['header'][$i]);
    		}
    		
    		for($i=0;$i<count($res['goods']);$i++){
    			for($j=0;$j<count($data['letter']);$j++){
    				$objPHPExcel->getActiveSheet(0)->setCellValue($data['letter'][$j].($i+4),$res['goods'][$i][$data['field'][$j]]);
    			}
    			//设置文字垂直居中
    			$objPHPExcel->getActiveSheet()->getStyle('A'.($i+4).':'.end($data['letter']).($i+4))->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
    			//设置表格框线
    			$objPHPExcel->getActiveSheet()->getStyle('A'.($i+4).':'.end($data['letter']).($i+4))->getBorders()->getAllBorders()->setBorderStyle(\PHPExcel_Style_Border::BORDER_THIN);
    			//设置行高
    			$objPHPExcel->getActiveSheet()->getRowDimension($i+4)->setRowHeight(18);
    			//自动换行
    			$objPHPExcel->getActiveSheet()->getStyle('A'.($i+4).':'.end($data['letter']).($i+4))->getAlignment()->setWrapText(true);
    		}
    
    		//纵向合并单元格
    		$start = 4;
    		for($m=0;$m<count($res['users']);$m++){
    			$end = $start + (int)$res['users'][$m]['list_num'] - 1;
    			$objPHPExcel->getActiveSheet()->mergeCells('B'.$start.':B'.$end);
    			$objPHPExcel->getActiveSheet()->mergeCells('C'.$start.':C'.$end);
    			$start += (int)$res['users'][$m]['list_num'];
    		}
    
    		//设置工作表名称
    		$objPHPExcel->getActiveSheet()->setTitle($data['sheetname']);
    		
    		//将活动表索引设置为第一个表,因此Excel将作为第一个表打开此表
    		$objPHPExcel->setActiveSheetIndex(0);
    		
    		ob_end_clean(); //清除缓冲区,避免乱码
    		
    		// 将输出重定向到一个客户端web浏览器(Excel2007)
    		header('Content-Type: application/vnd.ms-excel');
    		header('Content-Disposition: attachment;filename='.$data['filename']);
    		header('Cache-Control: max-age=0');
    		
    		//要是输出为Excel2007,使用 Excel2007对应的类,生成的文件名为.xlsx。
    		//如果是Excel2003及以下,使用Excel5,对应生成.xls文件
    		//$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
    		$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    		
    		//支持浏览器下载生成的文档
    		$objWriter->save('php://output');
    		
    		//支持保存生成的文件在当前目录下,直接文件名做为参数
    		// $objWriter->save('test.xlsx');
    	}
    }
    ?>
    
    展开全文
  • 1、纵向合并单元格 //从第13行起(包括第13行),向上选择12行,并纵向合并 int rowcount = 12; int cellrow = 13; table.Cell(cellrow, 1).Select();//光标放在第13行的第一个单元格 object WdUnits = Microsoft....

    1、纵向合并单元格

    //从第13行起(包括第13行),向上选择12行,并纵向合并
    int rowcount = 12;
    int cellrow = 13;
    table.Cell(cellrow, 1).Select();//光标放在第13行的第一个单元格
    object WdUnits = Microsoft.Office.Interop.Word.WdUnits.wdLine;
    object WdMovementType = Microsoft.Office.Interop.Word.WdMovementType.wdExtend;
    wApp.Selection.MoveUp(WdUnits, rowcount, WdMovementType);
    wApp.Selection.Cells.Merge();

    但纵向合并单元格总是会涉及到跨页问题,导致无法选中单元格,合并失败。目前为止,我测试得到的有效方法是:

    (1)设置表格属性:按照下图红框中的设置

    (2)修改选择单元格的代码:

    //从第13行起(包括第13行),向上选择12行,并纵向合并
    int rowcount = 12;
    int cellrow = 13;
    table.Cell(cellrow, 1).Select();//光标放在第13行的第一个单元格
    object WdUnits = Microsoft.Office.Interop.Word.WdUnits.wdLine;
    object WdMovementType = Microsoft.Office.Interop.Word.WdMovementType.wdExtend;
    for (int rc = 0; rc < rowcount; rc++)//循环选择单元格
    {                                                                
        wApp.Selection.MoveUp(WdUnits, 1, WdMovementType);
    }
    wApp.Selection.Cells.Merge();

    (3)目前是成功解决了纵向合并单元格的跨页问题。只有一个瑕疵,在页尾会出现显示不全的问题,需要用户手动拉动单元格,将内容全部显示出来。

    展开全文
  • Reporting Service:纵向合并单元格

    千次阅读 2019-04-26 13:32:34
    Reporting Service 横向合并单元格没有问题,但是貌似不支持纵向合并单元格。 解决办法:在单元格中插入列表; 注意事项: 1. 插入列表时,默认插入的是两行三列的表格,第一行是“页眉”,第二行是“数据”,...
  • 支持大数据量导出excel。自动合并相同数据单元格,可根据id自动识别是否合并,支持自定义类型数据转换,根据实体类自动识别。
  • 横向合并单元格 int[3] 0:rowIndex 1:columnsIndex 2:...纵向合并单元格 int[3] 0:rowIndex 1:columnsIndex 2:count 前两个参数、行列可以定位到单元格 count即为往下数count个单元格 实现效果 ...
  • 主要是重写了一个datagridview,实现datagridview的横向、纵向合并单元格。dataGreatViewMergeCells.zip
  • <template> <el-table :span-method="spanMethod"> <el-table-column label="组号" show-overflow-tooltip> <template slot-scope="scope"> <span>{{ scope.row.group_number }... .
  • java excel poi合并单元格
  • DataGridView合并单元格纵向合并及横向合并) 京华志&精华志出品 分享资源 C# ASP.NET SQL DBA 源码
  • 效果见图 Ureprot右侧求和,经典操作,这个是这个贴子的答案。 https://bbs.csdn.net/topics/399129750 https://img-bbs.csdn.net/upload/202103/27/1616848520_741648.png
  • 横向合并 Workbook workbook =sheetUtils.exportExcel(dto); CellRangeAddress craOne = new CellRangeAddres...
  • https://blog.csdn.net/yixian2007/article/details/51697492?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param提供了一种RDLC报表纵向合并单元格的方法...在以后的纵向合并RDLC报表单元格的需求中提供了一种参考。
  • 最近一个项目需要使用Pandas对数据中某几列进行类似Excel中的合并单元格操作 首先想到的是使用dataframe的set_index()方法 通过测试,发现也确实能实现 但是,一旦两条数据不相临,合并就失效了 我们可以使用...
  • 在html中表格如何合并单元格

    千次阅读 2021-06-08 15:49:05
    在html中表格如何合并单元格发布时间:2020-04-28 10:55:12来源:亿速云阅读:777作者:小新这篇文章主要为大家详细介绍了在html中表格如何合并单元格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小...
  • 最终效果如上图所示,这个问题的难点在于如何纵向合并单元格,在网上百度了两天,也没有一个真正实现纵向合并单元格的方法,没办法,只好自己实现,用时四天,终于完成这个报表,希望能为大家带来帮助,转载请注明 ...
  • _在报表系统中,涉及“HTML的TD单元格合并”恐怕为数不少。比如,从DB查得数据并经过后台的整理后,可能是这样的:Table1JOBTOTAL SALINDEXEMPNOENAMEJOBMGRHIREDATESALCOMMDEPTNO1ANALYST600017788SCOTTANALYST...
  • 最近使用element UI 的table 组件碰到一个需求,就是要纵向合并相同的单元格,官方提供了span-method 方法, span-method 方法提供了四个参数 官方链接 后来经过百度找到一个思路很清晰的demo 拿过来改了下,就可以...
  • WPF 原生的Grid表格线不够美观,想要更美观的表格线,可以根据自己的喜好设置颜色,也支持表格单元格行列合并,以上资源可满足。
  • 1 横向合并 实现代码: using Aspose.Words.Tables Document doc=new Document("test.doc"); DocumentBuilder builder =new DocumentBuiler(); int tableIndex=0; //移动至第一行第一列 builder.MoveToCell...
  • JqGrid纵向合并单元格

    2019-05-26 16:25:00
    在项目开发中,前端页面经常会遇到一些表格数据需要合并单元格的操作,尤其是各类统计报表,下面我就介绍一种单元格纵向合并的方法: 举个栗子: 姓名 工作时间 工作内容 张三 ...
  • , r1, r2, c1, c2 =m_area.min_row, m_area.max_row, m_area.min_col, m_area.max_col#纵向合并单元格的位置信息提取出 if r2 - r1 >0: cr.append((r1, r2, c1, c2))#这里注意需要把合并单元格的信息提取出再拆分 ...
  • itextpdf 合并单元格 横向纵向

    千次阅读 2021-04-28 09:37:46
    PdfPCell cell = new PdfPCell(); cell.setRowspan(2);//纵向合并 2行 cell.setColspan(3);//横向合并 3行 itextpdf 5.4.3
  • rdlc报表纵向合并单元格

    千次阅读 2015-11-15 10:03:30
    我不会纵向合并,不过通过设置上下左右边框可见度可以达到如下的效果 workaround:   运行效果:
  • layui table合并单元格.zip 跨行自动合并单元格

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,307
精华内容 3,322
关键字:

如何纵向合并单元格