{"id":24520850,"url":"https://github.com/quansitech/antd-admin-table-action-export","last_synced_at":"2025-03-15T12:16:27.501Z","repository":{"id":273314278,"uuid":"918125810","full_name":"quansitech/antd-admin-table-action-export","owner":"quansitech","description":"antd-admin表格导出","archived":false,"fork":false,"pushed_at":"2025-02-05T07:14:22.000Z","size":316,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-05T08:23:09.976Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/quansitech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-17T09:52:38.000Z","updated_at":"2025-02-05T07:13:07.000Z","dependencies_parsed_at":"2025-01-20T06:44:11.005Z","dependency_job_id":"a99af1ae-59a0-45e5-90aa-40702e51f01b","html_url":"https://github.com/quansitech/antd-admin-table-action-export","commit_stats":null,"previous_names":["quansitech/antd-admin-table-action-export"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quansitech%2Fantd-admin-table-action-export","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quansitech%2Fantd-admin-table-action-export/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quansitech%2Fantd-admin-table-action-export/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/quansitech%2Fantd-admin-table-action-export/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/quansitech","download_url":"https://codeload.github.com/quansitech/antd-admin-table-action-export/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243725633,"owners_count":20337670,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-22T02:39:57.280Z","updated_at":"2025-03-15T12:16:27.482Z","avatar_url":"https://github.com/quansitech.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## xlsx导出excel（antd-admin版）\n\n升级 [quansitech/qscmf-topbutton-export](https://github.com/quansitech/qscmf-topbutton-export) 至antd-admin版\n\n+ 安装\n\n```shell\ncomposer require quansitech/qscmf-topbutton-export\nnpm i --save https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz\n```\n\n+ 使用样例\n\n```php\n...\n\nclass PostController extends GyListController{\n    //继承ExportExcelByXlsx\n    use ExportExcelByXlsx;\n    public function index() {\n...\n        // ListBuilder\n        $builder = new \\Common\\Builder\\ListBuilder();\n        //第一个参数指定export类型，第二个参数是指定需要覆盖的html组件属性\n        //title为按钮名称，默认导出excel\n        //data-url为点击导出按钮后ajax请求的地址,必填\n        //data-filename 为生成的excel文件名,默认为浏览器的默认生成文件名\n        //data-streamrownum 为每次请求获取的数据数\n        $builder-\u003eaddTopButton('export', array('title' =\u003e '样例导出', 'data-url' =\u003e U('/admin/post/export'), 'data-filename' =\u003e '文章列表', 'data-streamrownum' =\u003e '10'));\n        \n        // antd-admin table\n        $table = new \\AntdAdmin\\Component\\Table();\n        $table-\u003eactions(function (\\AntdAdmin\\Component\\Table\\ActionsContainer $container){\n            $container-\u003eexportButton('导出');\n        });\n...\n    }\n    //导出excel请求的action\n    public function export(){\n    \n        //exportExcelByXlsx为 Qscmf\\Builder\\ExportExcelByXlsx trait提供的方法\n        //参数为一个闭包函数，接收两个参数， page为请求的页数， rownnum为请求的数据行数\n        $this-\u003eexportExcelByXlsx(function($page, $rownum){\n             //闭包函数必须返回如下数据格式\n             //[\n             //    [  'excel表头1' =\u003e  行1数据1, 'excel表头2' =\u003e 行1数据2 ..... ]\n             //    [  'excel表头1' =\u003e  行2数据1, 'excel表头2' =\u003e 行2数据2 ..... ]\n             //    ...\n             //]\n            return [\n                 [  '姓名' =\u003e  'tt', '性别' =\u003e 'male', '年龄' =\u003e 23 ]\n                 [  '姓名' =\u003e  'ff', '性别' =\u003e 'female', '年龄' =\u003e 19 ]\n            ];\n        });\n\n    }\n\n```\n\n#### 筛选导出列\n\n```php\n//列配置，default为true表示默认选中状态, required为true表示必选\n$cols_options = [\n    [\n        'key' =\u003e 'name',\n        'title' =\u003e '商家名称',\n        'default' =\u003e true,\n        'required' =\u003e true\n    ],\n    [\n        'key' =\u003e 'account',\n        'title' =\u003e '账号',\n        'default' =\u003e true\n    ],\n    [\n        'key' =\u003e 'address',\n        'title' =\u003e '商家地址'\n    ],\n    [\n        'key' =\u003e 'num',\n        'title' =\u003e '核销次数'\n    ],\n    [\n        'key' =\u003e 'status',\n        'title' =\u003e '状态'\n    ],\n    [\n        'key' =\u003e 'explain',\n        'title' =\u003e '优惠券使用说明'\n    ]\n];\n\n// listbuilder\n//将列配置复制给第二个参数的键值 export_cols\n//控件会将选择的列数据post至url,可通过I('post.exportCol')获取，再进行数据筛选逻辑处理。\n$builder-\u003eaddTopButton('export', array('export_cols' =\u003e $cols_options, 'title' =\u003e '样例导出', 'data-url' =\u003e U('/admin/post/export'), 'data-filename' =\u003e '文章列表', 'data-streamrownum' =\u003e '10'));\n\n// antd-admin table action\n/** @var \\AntdAdmin\\Component\\Table\\ActionsContainer $container */\n$container-\u003eexportButton('导出')-\u003esetCols($cols_options);\n\n```\n\n#### 导出数据为多张工作表\n\n```php\n $export_arr = [\n    ['sheetName' =\u003e 'Sheet1', 'url' =\u003e U('/admin/post/export'), 'rownum' =\u003e '15'],\n    ['sheetName' =\u003e 'Sheet2', 'url' =\u003e U('/admin/post/export'), 'rownum' =\u003e '15'],\n ];\n \n $builder-\u003eaddTopButton('export', ['data-url' =\u003e json_encode($export_arr), 'data-filename' =\u003e '导出列表', 'data-streamrownum' =\u003e intval($export_arr[0]['rownum'])]);\n```\n\n#### 业务层错误提示\n\n```php\n可在导出数据处理的action位置进行错误验证，使用$this-\u003eerrro(\"test\")\n插件可自动获取错误信息并alert提示用户\n```\n\n#### 导出辅助类\n\n[ExportExcelByXlsx使用说明](https://github.com/quansitech/qscmf-topbutton-export/blob/master/ExportExcelByXlsx.md)\n\n#### 导出有合并单元格的表格\n\n```text\n每一行数据添加字段 _cellProperties 来配置对应的单元格需要合并的范围。\n\n_cellProperties 包括 rowSpan colSpan值，为0表示被合并的单元格\n```\n\n+ 用法\n  ```php\n  // 原始数据为\n  $source_data = [\n    ['name' =\u003e 'name1','nick_name' =\u003e 'nick_name1','phone' =\u003e 'phone1','tel' =\u003e 'tel1'],\n    ['name' =\u003e 'name2','nick_name' =\u003e 'nick_name2','phone' =\u003e 'phone2','tel' =\u003e 'tel2'],\n    ['name' =\u003e 'name3','nick_name' =\u003e 'nick_name3','phone' =\u003e 'phone3','tel' =\u003e 'tel3'],\n  ];\n  \n  // 想要实现的效果\n  // 将第二行的 name 和 第三行的 name 行合并，并展示 第二行 的值； \n  // 将第二行的 phone 和 tel 列合并，并展示 phone； \n  \n  // 设置每一行的 _cellProperties \n  $source_data = [\n    ['name' =\u003e 'name1','nick_name' =\u003e 'nick_name1','phone' =\u003e 'phone1','tel' =\u003e 'tel1', \n     '_cellProperties' =\u003e ['name' =\u003e '','nick_name' =\u003e '','phone' =\u003e '','tel' =\u003e '']],\n    ['name' =\u003e 'name2','nick_name' =\u003e 'nick_name2','phone' =\u003e 'phone2','tel' =\u003e 'tel2',\n     '_cellProperties' =\u003e ['name' =\u003e ['rowSpan' =\u003e 2],'nick_name' =\u003e '','phone' =\u003e ['colSpan' =\u003e 2],'tel' =\u003e ['colSpan' =\u003e 0]]],\n    ['name' =\u003e 'name3','nick_name' =\u003e 'nick_name3','phone' =\u003e 'phone3','tel' =\u003e 'tel3', \n     '_cellProperties' =\u003e ['name' =\u003e ['rowSpan' =\u003e 0],'nick_name' =\u003e '','phone' =\u003e '','tel' =\u003e '']],\n  ];\n  \n  // 导出的数据格式为 \n  $export_data = [\n    ['表头字段1' =\u003e 'name1','表头字段2' =\u003e 'nick_name1','表头字段3' =\u003e 'phone1','表头字段4' =\u003e 'tel1', \n     '_cellProperties' =\u003e ['表头字段1' =\u003e '','表头字段2' =\u003e '','表头字段3' =\u003e '','表头字段4' =\u003e '']],\n    ['表头字段1' =\u003e 'name2','表头字段2' =\u003e 'nick_name2','表头字段3' =\u003e 'phone2','表头字段4' =\u003e 'tel2', \n     '_cellProperties' =\u003e ['表头字段1' =\u003e ['rowSpan' =\u003e 2],'表头字段2' =\u003e '','表头字段3' =\u003e ['colSpan' =\u003e 2],'表头字段4' =\u003e ['colSpan' =\u003e 0]]],\n    ['表头字段1' =\u003e 'name3','表头字段2' =\u003e 'nick_name3','表头字段3' =\u003e 'phone3','表头字段4' =\u003e 'tel3', \n     '_cellProperties' =\u003e ['表头字段1' =\u003e ['rowSpan' =\u003e 0],'表头字段2' =\u003e '','表头字段3' =\u003e '','表头字段4' =\u003e '']],\n  ];\n \n  // 原始数据与导出数据的差异为 每一行数据的键名不同\n  // 可以使用辅助函数 combineListWithNameMapping 将 $source_data 转为 $export_data\n  \n  $header_mapping = [\n    'name' =\u003e '表头字段1',\n    'nick_name' =\u003e '表头字段2',\n    'phone' =\u003e '表头字段3',\n    'tel' =\u003e '表头字段4',\n  ];\n  \n  $export_data = $this-\u003ecombineListWithNameMapping($source_data, $header_mapping);\n  \n  ```\n  导出效果如图所示\n\n  ![合并表格效果](https://user-images.githubusercontent.com/35066497/192722889-16e62813-7ca8-4f10-89aa-1efd8768f23e.png)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquansitech%2Fantd-admin-table-action-export","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fquansitech%2Fantd-admin-table-action-export","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fquansitech%2Fantd-admin-table-action-export/lists"}