当前位置: 首页 > news >正文

自贡制作网站美食网站网页设计论文

自贡制作网站,美食网站网页设计论文,深圳工程交易服务网,网站建站东莞因项目需要导出Excel表 需要支持下拉 且 还需要支持三级联动功能 目前应为PHPExcel 不在维护#xff0c;固采用 PhpSpreadsheet 效果如图#xff1a; 第一步#xff1a;首先 使用composer 获取PhpSpreadsheet 我这里PHP 版本 7.4 命令如下#xff1a; composer r…因项目需要导出Excel表   需要支持下拉   且 还需要支持三级联动功能  目前应为PHPExcel 不在维护固采用 PhpSpreadsheet 效果如图 第一步首先 使用composer 获取PhpSpreadsheet 我这里PHP 版本 7.4  命令如下 composer require phpoffice/phpspreadsheet 第二步新建php 文件 代码如下   可根据实际情况 自己改动 ?phprequire ./vendor/autoload.php; use PhpOffice\PhpSpreadsheet\Cell\DataValidation; use PhpOffice\PhpSpreadsheet\IOFactory; use PhpOffice\PhpSpreadsheet\NamedRange; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Style\Alignment; use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet; use PhpOffice\PhpSpreadsheet\Cell\Coordinate; use PhpOffice\PhpSpreadsheet\Style\NumberFormat; use PhpOffice\PhpSpreadsheet\Writer\Xlsx;// 定义表头 $header [[col A, title 姓名, field name, width 20, id_down_type 0, is_text 1],[col B, title 证件号, field id_card, width 30, id_down_type 0, is_text 1],[col C, title 性别, field gender, width 20, id_down_type 1, is_text 1, count 2, sub_table_name sex],[col D, title 联系方式, field phone, width 20, id_down_type 0, is_text 1],[col E, title 门店, field mendiao, width 30, id_down_type 2, is_text 0],[col F, title 公寓, field gongyu, width 30, id_down_type 2, is_text 0],[col G, title 门牌号, field menpai, width 30, id_down_type 2, is_text 0], ];// 下拉数据[这里模拟出来数据格式实际情况从数据库获取数据并整理成下列数据格式] $oneData [[id 1,title 我是A,text我是A_1,children [[id 2,title 我是A的下级A1,text我是A的下级A1_2,children [[id 3,title 我是A1的下级A11,text我是A1的下级A11_3,],[id 4,title 我是A1的下级A12,text我是A1的下级A12_4,]]],[id 5,title 我是A的下级A2,text我是A的下级A2_5,children [[id 6,title 我是A2的下级A21,text我是A2的下级A21_6,],[id 7,title 我是A2的下级A22,text我是A2的下级A22_7,]]]]],[id 8,title 我是B,text我是B_8,children [[id 9,title 我是B的下级B1,text我是B的下级B1_9,children [[id 10,title 我是B1的下级B11,text我是B1的下级B11_10,],[id 11,title 我是B1的下级B12,text我是B1的下级B12_11,]]],[id 12,title 我是B的下级B2,text 我是B的下级B2_12,children [[id 13,title 我是B2的下级B21,text 我是B2的下级B21_13,],[id 14,title 我是B2的下级B22,text 我是B2的下级B22_14]]]]], ];//实例化Spreadsheet对象 $spreadsheet new Spreadsheet();$sex_list [[id 1, text 男],[id 2, text 女],]; $sub_table_num 1; //子表顺序 默认1 //创建子表下拉定义 用于下拉 $sub_table_info_arr [[title sex, index $sub_table_num, data $sex_list], ]; $sub_table_num;//创建下拉分表数据 create_excel_sub_table($spreadsheet, $sub_table_info_arr);//创建下拉联动分表数据 $liandong_name region; // 这里的region为分表名称 create_excel_drop_down($spreadsheet, $sub_table_num, $liandong_name, $oneData); //无限极oneData 里面结构为[[text部门1_00001,children[[text部门1子集1_00001]]]// 初始化表头 $spreadsheet-setActiveSheetIndex(0); $spreadsheet-getActiveSheet()-setTitle(导入模板);foreach ($header as $key $value) {//$spreadsheet-getActiveSheet()-setCellValueByColumnAndRow($key, 1, $value[title]);$spreadsheet-setActiveSheetIndex(0)-setCellValue($value[col] . 1, $value[title]);$spreadsheet-getActiveSheet()-getStyle($value[col] . 1, $value[title])-getFont()-getColor()-setARGB(\PhpOffice\PhpSpreadsheet\Style\Color::COLOR_RED); //设置红色文字// 设置每列宽度$spreadsheet-getActiveSheet()-getColumnDimension($value[col])-setWidth($value[width]);//设置单元格格式为文本if ($value[is_text] 1) {$spreadsheet-getActiveSheet()-getStyle($value[col])-getNumberFormat()-setFormatCode(NumberFormat::FORMAT_TEXT);} } $objActSheet $spreadsheet-getActiveSheet();// 输出下拉菜单 for ($i 2; $i 2000; $i) {foreach ($header as $key1 $value1) {//$this-set_select_cell($objActSheet,A,id_type,$key,$i);if ($value1[id_down_type] 1) {//单纯下拉set_select_cell($objActSheet, $value1[col], $value1[sub_table_name], $value1[count], $value1[title], $i);} elseif ($value1[id_down_type] 2) {//联动下拉if ($value1[col] A || $value1[col] E || $value1[col] AC) {switch ($value1[col]) {case E:$fit_col [F,G];break;case AC://这里为关联 如AC 列 关联AD AE 这个$fit_col [AD, AE];break;}$mian_col $value1[col];//处理联动下拉set_drop_down_select_cell($objActSheet, $mian_col, $fit_col, $value1[title], $i,$liandong_name);}}} } $path ./; $subject 导出模板.date(YmdHis); $ext .xlsx; //后缀 $export $path . $subject . $ext; $writer new Xlsx($spreadsheet); //保存文件 $writer-save($export); //关闭连接销毁变量 $spreadsheet-disconnectWorksheets();unset($spreadsheet); var_dump($export); die;/*** 创建Excel 分表* param obpe Excel 对象* param sub_table_info_arr 需要需要创建的分表二维数组 key title_name 分表表名标题 key index 分表顺序 key data 数据源 且数据源必须为 id text 键值对* param write_data 写入的数据 二维 包含 id text 两个键值*/ function create_excel_sub_table($obpe, $sub_table_info_arr) {if (!empty($sub_table_info_arr)) {foreach ($sub_table_info_arr as $key $value) {$obpe-createSheet();$obpe-setActiveSheetIndex($value[index]); //设置序号$obpe-getActiveSheet()-setTitle($value[title]); //设置表名$obpe-getActiveSheet()-setSheetState(Worksheet::SHEETSTATE_HIDDEN); //隐藏//密码$obpe-getActiveSheet()-getProtection()-setPassword(PHPExcel);$obpe-getActiveSheet()-getProtection()-setSheet(true);// This should be enabled inorder to enable any of thefollowing!$obpe-getActiveSheet()-getProtection()-setSort(true);$obpe-getActiveSheet()-getProtection()-setInsertRows(true);$obpe-getActiveSheet()-getProtection()-setFormatCells(true);$key 1;if (!empty($value[data])) {foreach ($value[data] as $k $v) {$str $v[text] . _ . $v[id];$obpe-getActiveSheet()-setCellValue(A . $key, $str);$key;}}}} }/*** 生成Excel 列* param int $num 需要的列数* return array*/function getExcelIndexRow($num1){$r [];$idx [idx 0];for ($i 0; $i $num; $i) {$r[] getNextIdx($idx);}unset($idx);return $r; }function getNextIdx($idx) {// 先转换26进制$num26 base_convert($idx[idx], 10, 26);$result ;// 对每一位进行字符转换for ($i 0; $i strlen(strval($num26)); $i) {if ($i 0 strlen(strval($num26)) ! 1) {if (is_numeric($num26[$i])) {$result. chr(ord($num26[$i]) 16);} else {$result. chr(ord($num26[$i]) - 23);}} else {if (is_numeric($num26[$i])) {$result. chr(ord($num26[$i]) 17);} else {$result. chr(ord($num26[$i]) - 22);}}}$idx[idx] $idx[idx] 1;return $result; }/***生成Excel 联动下拉* param obpe Excel对象句柄* param sub_table_num 分表序号* param table_name 分表名称* param data_source 需要处理的数据源*/ function create_excel_drop_down($obpe, $sub_table_num, $table_name, $data_source) {//***********************$obpe-createSheet();$obpe-setActiveSheetIndex($sub_table_num);$obpe-getActiveSheet()-setTitle($table_name);$obpe-getActiveSheet()-setSheetState(\PhpOffice\PhpSpreadsheet\Worksheet\Worksheet::SHEETSTATE_HIDDEN); //隐藏//密码$obpe-getActiveSheet()-getProtection()-setPassword(PHPExcel);$obpe-getActiveSheet()-getProtection()-setSheet(true);// This should be enabled inorder to enable any of thefollowing!$obpe-getActiveSheet()-getProtection()-setSort(true);$obpe-getActiveSheet()-getProtection()-setInsertRows(true);$obpe-getActiveSheet()-getProtection()-setFormatCells(true);$key 1;//$col [A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, AA, AB, AC, AD, AE, AF, AG, AH, AI, AJ, AK, AL, AM, AN, AO, AP, AQ, AR, AS, AT, AU, AV, AW, AX, AY, AZ, BA];//这里定义1000个下拉 若超过 1000个下拉 异常输出$col getExcelIndexRow(1000);$high 0;//数据源格式必须按照以下格式规整 要不然数据处理出错/*$re [[name湖北省,children[[name武汉市,children [江夏区,洪山区,青山区,武昌区]],[name宜昌市,children [江夏区1,洪山区1,青山区1,武昌区1]],[name荆州市,children [江夏区2,洪山区2,青山区2,武昌区2]]]],[name湖南省,children[[name长沙市,children [长沙市,长沙市1,长沙市3,长沙市6]],[name岳阳市,children [岳阳市4,岳阳市3,岳阳市2,岳阳市1]],[ name常德市,children [常德市1,常德市2,常德市3,常德市4]]]],];*/foreach ($data_source as $k $v) {$str $v[text];$obpe-getActiveSheet()-setCellValue($col[0] . ($key $high), $str);$max 0; // 重置max$secondNum count($v[children]);if (!empty($v[children])) {foreach ($v[children] as $index $sendcond) {$obpe-getActiveSheet()-setCellValue($col[$index 1] . ($key $high), $sendcond[text]);//这里需要处理 若没有if (isset($sendcond[children]) $sendcond[children]) {$thirdNum count($sendcond[children]);} else {$thirdNum 0;}if ($thirdNum $max) {$max $thirdNum;}if (!empty($sendcond[children])) {foreach ($sendcond[children] as $id $third) {//$obpe-getActiveSheet()-setCellValue($col[$index1].($key$high$id1),$third);$obpe-getActiveSheet()-setCellValue($col[$index 1] . ($key $high $id 1), $third[text]);}//定义三级名称$obpe-addNamedRange(new NamedRange($sendcond[text],$obpe-getSheetByName($table_name),$col[$index 1] . ($key $high 1) . : . $col[$index 1] . ($key $high 1 $thirdNum - 1)));}}//定义二级$obpe-addNamedRange(new NamedRange($v[text],$obpe-getSheetByName($table_name),$col[1] . ($key $high) . : . $col[$secondNum] . ($key $high)));}$high $max;$key;}//移花foreach ($data_source as $var $cont) {$obpe-getSheetByName($table_name)-setCellValue(UI . ($var 1), $cont[text]);}$total count($data_source);$n 1;$obpe-addNamedRange(new NamedRange($table_name,$obpe-getSheetByName($table_name),\$UI\${$n}:\$UI\${$total})); }/***设置Excel 下拉 2020年8月4日16:02:09* param objActSheet Excel对象句柄* param col 操作的列* param table_name Excel电子薄分表下拉名称*/ function set_select_cell($objActSheet, $col , $table_name, $key , $setPromptTitle, $i , $setErrorTitle 输入的值有误, $setError 您输入的值不在下拉列表内) {$objValidation $objActSheet-getCell({$col} . $i)-getDataValidation();$objValidation-setType(DataValidation::TYPE_LIST)// -setErrorStyle(DataValidation::STYLE_INFORMATION)-setErrorStyle(DataValidation::STYLE_STOP)-setAllowBlank(true)-setShowInputMessage(true)-setShowErrorMessage(true)-setShowDropDown(true)-setErrorTitle(输入的值有误)-setError(您输入的值不在下拉列表内)-setPromptTitle({$setPromptTitle}在列表内选择)-setPrompt(请从列表中选择一个值)-setFormula1($table_name . !$A$1:$A$ . $key); }/*** 设置联动下拉的Excel 渲染 2020年8月8日20:23:39* param objActSheet Excel对象句柄* param mian_col 联动下拉第一列* param fit_col 数组 子下拉节点 setFormula1 依次为下拉第一列名 后续依次关联* param setPromptTitle 中文字段映射名称*/ function set_drop_down_select_cell($objActSheet, $main_col, $fit_col, $setPromptTitle, $i,$main_table_nameregion) {$indirect_list_arr $fit_col; //从主下拉节点开始计算array_unshift($indirect_list_arr, $main_col);//定义主表名//处理主下拉$objValidation $objActSheet-getCell($main_col . $i)-getDataValidation();$objValidation-setType(\PhpOffice\PhpSpreadsheet\Cell\DataValidation::TYPE_LIST)-setErrorStyle(\PhpOffice\PhpSpreadsheet\Cell\DataValidation::STYLE_STOP)-setAllowBlank(false)-setShowInputMessage(true)-setShowErrorMessage(true)-setShowDropDown(true)-setErrorTitle(输入的值有误)-setError(您输入的值不在下拉列表内)-setPromptTitle({$setPromptTitle}在列表内选择)//-setPromptTitle(type_list在列表内选择)-setPrompt(请从列表中选择一个值)-setFormula1({$main_table_name});//处理分节点下拉if (!empty($fit_col)) {foreach ($fit_col as $key $value) {$objValidation $objActSheet-getCell($value . $i)-getDataValidation();$objValidation-setType(\PhpOffice\PhpSpreadsheet\Cell\DataValidation::TYPE_LIST)-setErrorStyle(\PhpOffice\PhpSpreadsheet\Cell\DataValidation::STYLE_STOP)-setAllowBlank(false)-setShowInputMessage(true)-setShowErrorMessage(true)-setShowDropDown(true)-setErrorTitle(输入的值有误)-setError(您输入的值不在下拉列表内)-setPromptTitle(请选择)-setPrompt(请从列表中选择一个值)-setFormula1(INDIRECT($ . $indirect_list_arr[$key] . $i . ));}}return true; } 步骤三 运行php   我这里使用命令行  php index.php 查看即可 就是如此简单
http://www.dnsts.com.cn/news/135821.html

相关文章:

  • 专做律师网站html5中文网站欣赏
  • 二合一收款码免费制作网站丈哥seo博客工具
  • 门业网站源码博客营销
  • php网站服务器配置wordpress首页布局插件
  • 网站怎么发邮件商业网站是怎么做的
  • 清远佛冈住房和城乡建设局网站app音乐网站开发
  • 如何组建网站wordpress菜单加粗
  • 厦门网站改版三只小猪的题目登网站做
  • 怎么封锁网站网站产品详情用哪个软件做的
  • 企业软件定制开发公司宁波网站seo哪家好
  • 承德市网站建设好看的网站排版
  • 长沙官网网站制作公司网页传奇176
  • 网站排名易下拉排名大画册设计网站
  • 东莞互联网公司排名苏州百度seo代理
  • 四川建设学网官方网站登录网站群建设规范
  • 深圳制作网站主页有什么网站专做买生活污水设备
  • 石家庄网站建设推广公司莱芜拉呱
  • 常州承接网站建设wordpress 仪表板主题
  • 做百度翻译英文网站新闻发布网站建设实训
  • 网站制作aqq泰州网站建设优化
  • 南皮县网站建设价格网站开发一定要用框架嘛
  • 智慧城市网站 seo 优化建议
  • 设计师需要了解的网站做网站实名认证总是失败怎么回事
  • 台州市住房和城乡建设局网站网上推广平台 怎么入手
  • 西安企业网站主题 wordpress
  • 自建房外观设计网站推荐注册工作室流程及费用
  • 重庆微信开发网站建设北京短视频拍摄
  • 怎么做一个电商网站吗网站设计怎么设计学生作业
  • 情人节给女朋友做网站建筑工程施工合同范本
  • 网站系统有哪些python 做网站 数据库