精华内容
下载资源
问答
  • 由于B/S架构管理软件只安装服务器端(Server)上,即应用程序部署、升级、维护时,只需要服务器端进行配置就可以了,网络管理人员只需要管理服务器就行了,用户界面主要事务逻辑服务器(Server)端完全通过...
  • 公司后台管理系统开发中用到了 vue+element-ui 组合的框架,但随着需求的越来越复杂,前端的工作难度也呈几何倍数递增,工作量随之增大。这不,项目中增加一个将列表数据导出为excel的需求就紧跟着来了。 不光将...

    公司在后台管理系统开发中用到了 vue+element-ui 组合的框架,但随着需求的越来越复杂,前端的工作难度也呈几何倍数递增,工作量随之增大。这不,在项目中增加一个将列表数据导出为excel的需求就紧跟着来了。

    不光将数据导出,还得支持单笔导出或多笔批量导出。

    前端:前端招谁惹谁了?

    产品:入了前端门,生是前端人,死是前端鬼!

    前端:
    688074-20190130162137813-157599087.gif

    产品:
    688074-20190130162712573-384752340.gif

    为了生活,我们已经殚精竭虑;为了工作,我们已经竭尽全力!

    有需求,哭着也得实现啊。于是上网搜了一通,果然让我发现了解决之道:xlsx、file-saver和script-loader。

    接下来就说说具体的实现方法:

    上边提到了三个插件:xlsx、file-saver和script-loader,对,你没看错,就是三个插件,实现一个功能,需要三个插件,没办法啊。就像你的银行卡要用六位数的密码来保护两位数的余额一样,你有什么办法呢?谁让你败家呢?

    688074-20190130164239208-1995623159.gif

    一、 安装三个依赖项

    npm install -S file-saver
    npm install -S xlsx
    npm install -D script-loader

    二、在项目中新建一个文件夹(一般在src下新建,文件名自取,在这里命名为excel),在文件夹中放入Blob.js 和 export2Excel.js (这两个文件可在gitup上进行下载)

    三、vue组件调用(由于项目中很多页面都会用到,所以我就封装成了公共的方法)

    import html2Canvas from 'html2canvas'
    import JsPDF from 'jspdf'
    
    /*
     * 导出excel
     * @param { Array } params.excelHeader         导出excel的表头
     * @param { Array } params.excelFilterVal      导出数据所需的字段(multipleSelection或defaultList对象的属性)
     * @param { Array } params.multipleSelection   导出勾选的单笔或多笔数据
     * @param { Array } params.defaultList         默认导出列表所有数据
     * @param { Array } params.fileName            导出excel的文件名
    */
    export function export2Excel(params){
        let excelHeader = params.excelHeader || ['类型', '合同号', '账户名', '币种', '金额']
        let excelFilterVal = params.excelFilterVal || ['type', 'contractCode', 'accountName', 'currency', 'amount']
    
        require.ensure([], () => {
            let { export_json_to_excel } = require('@/excel/Export2Excel');
    
            //默认为导出全部列表,也可以单笔导出或勾选多笔批量导出
            let listArr = params.multipleSelection.length > 0 ? JSON.parse(JSON.stringify(params.multipleSelection)) : JSON.parse(JSON.stringify(params.defaultList));
            let formatData = formatJson(excelFilterVal, listArr);
            export_json_to_excel(excelHeader, formatData, params.fileName);
        })
    }
    
    function formatJson(excelFilterVal, listArr) {
        return listArr.map(v => {
          switch(v.type){
            case '01':
            v.type = '小贷';
            break;
            case '02':
            v.type = '租赁';
            break;
            case '03':
            v.type = '电商';
            break;
          }
    
          return excelFilterVal.map(j => v[j]);
        })
    }

    说明:
    1、以上代码在文件路径上用到了“@”符号,不懂的同学可自行查阅资料;

    2、以上代码用到了JSON.stringifyJSON.parse,主要是因为对象的引用的问题。我们都知道,在将一个对象赋值给另一个对象时,如果其中一个对象的某个属性值被修改了也会影响到另一个对象的某个属性值的改变,这是因为他们在内存中实际上是指向了同一个引用地址,所以我就先用JSON.stringify将目标对象(这里是一个数组,数组也是Object对象,没毛病)转变成一个字符串,让其在内存中开辟一个新的地址,这样就切断了引用对象的指针联系,然后再用JSON.parse将字符串转变为一个数组,就解决了引用对象之间互相影响的问题。导出excel方法中调用的formatJson函数中的type字段映射的文字跟页面中映射的文字稍微不同(formatJson函数修改的是listArr数组,而listArr数组是通过页面展示的默认数组defaultList或用户选择的数据数组multipleSelection赋值得来的),就会出现一个对象对另一个对象的影响,因此不得不使用了JSON.stringifyJSON.parse

    3、关于multipleSelection,这个是用了element-ui中el-table的多选功能。正是这个功能才是能实现单笔导出或多笔批量导出的关键,当选择了单笔或多笔时,multipleSelection存储的就是你选择的数据(详见element-ui的表格组件API),然后判断该数组是否为空,若为空,则默认导出列表的所有数据,若不为空,则导出选择的列表数据:
    let listArr = params.multipleSelection.length > 0 ? JSON.parse(JSON.stringify(params.multipleSelection)) : JSON.parse(JSON.stringify(params.defaultList));

    4、网上还有其他解决方案,详见vue2.0 + element UI 中 el-table 数据导出Excel等等,此类方案倒没有本文的解决方案那么麻烦,但有一个问题就是无法自行选择具体导出表格哪些列的数据,它是一股脑将表格的所有数据都导出了,包括对表格数据的一些按钮操作如修改按钮、删除按钮等,甚至将表格第一列的checkbox复选框也导出了,虽然插件xlsx 有一个参数display为true时可以将隐藏的行和单元格的数组不被解析(具体使用方法没有用过,不甚了解),但如果将表格的行或单元格设置为隐藏,那我们还在页面中展示数据干嘛?显然,这种解决方案虽然简单,但灵活度不够,适用于比较简单的只展示数据的表格的导出。

    本文参考:
    https://blog.csdn.net/xiaoshihoukediaole/article/details/81296327
    https://www.jianshu.com/p/6edf74f65fc1

    转载于:https://www.cnblogs.com/tnnyang/p/10339214.html

    展开全文
  • 公司后台管理系统开发中用到了 vue+element-ui 组合的框架,但随着需求的越来越复杂,前端的工作难度也呈几何倍数递增,工作量随之增大。这不,项目中增加一个将列表数据导出为excel的需求就紧跟着来了。不光将...

    公司在后台管理系统开发中用到了 vue+element-ui 组合的框架,但随着需求的越来越复杂,前端的工作难度也呈几何倍数递增,工作量随之增大。这不,在项目中增加一个将列表数据导出为excel的需求就紧跟着来了。

    不光将数据导出,还得支持单笔导出或多笔批量导出。

    前端:前端招谁惹谁了?

    产品:入了前端门,生是前端人,死是前端鬼!

    前端:

    产品:

    为了生活,我们已经殚精竭虑;为了工作,我们已经竭尽全力!

    有需求,哭着也得实现啊。于是上网搜了一通,果然让我发现了解决之道:xlsx、file-saver和script-loader。

    接下来就说说具体的实现方法:

    上边提到了三个插件:xlsx、file-saver和script-loader,对,你没看错,就是三个插件,实现一个功能,需要三个插件,没办法啊。就像你的银行卡要用六位数的密码来保护两位数的余额一样,你有什么办法呢?谁让你败家呢?

    一、 安装三个依赖项npm install -S file-saver

    npm install -S xlsx

    npm install -D script-loader

    二、在项目中新建一个文件夹(一般在src下新建,文件名自取,在这里命名为excel),在文件夹中放入Blob.js 和 export2Excel.js (这两个文件可在gitup上进行下载)

    三、vue组件调用(由于项目中很多页面都会用到,所以我就封装成了公共的方法)/*

    * 导出excel

    * @param { Array } params.excelHeader         导出excel的表头

    * @param { Array } params.excelFilterVal      导出数据所需的字段(multipleSelection或defaultList对象的属性)

    * @param { Array } params.multipleSelection   导出勾选的单笔或多笔数据

    * @param { Array } params.defaultList         默认导出列表所有数据

    * @param { Array } params.fileName            导出excel的文件名

    */export function export2Excel(params){    let excelHeader = params.excelHeader || ['类型', '合同号', '账户名', '币种', '金额']    let excelFilterVal = params.excelFilterVal || ['type', 'contractCode', 'accountName', 'currency', 'amount']    require.ensure([], () => {        let { export_json_to_excel } = require('@/excel/Export2Excel');        //默认为导出全部列表,也可以单笔导出或勾选多笔批量导出

    let listArr = params.multipleSelection.length > 0 ? JSON.parse(JSON.stringify(params.multipleSelection)) : JSON.parse(JSON.stringify(params.defaultList));        let formatData = formatJson(excelFilterVal, listArr);

    export_json_to_excel(excelHeader, formatData, params.fileName);

    })

    }function formatJson(excelFilterVal, listArr) {    return listArr.map(v => {      switch(v.type){        case '01':

    v.type = '小贷';        break;        case '02':

    v.type = '租赁';        break;        case '03':

    v.type = '电商';        break;

    }      return excelFilterVal.map(j => v[j]);

    })

    }

    说明:

    1、以上代码在文件路径上用到了“@”符号,不懂的同学可自行查阅资料;

    2、以上代码用到了JSON.stringify和JSON.parse,主要是因为对象的引用的问题。我们都知道,在将一个对象赋值给另一个对象时,如果其中一个对象的某个属性值被修改了也会影响到另一个对象的某个属性值的改变,这是因为他们在内存中实际上是指向了同一个引用地址,所以我就先用JSON.stringify将目标对象(这里是一个数组,数组也是Object对象,没毛病)转变成一个字符串,让其在内存中开辟一个新的地址,这样就切断了引用对象的指针联系,然后再用JSON.parse将字符串转变为一个数组,就解决了引用对象之间互相影响的问题。导出excel方法中调用的formatJson函数中的type字段映射的文字跟页面中映射的文字稍微不同(formatJson函数修改的是listArr数组,而listArr数组是通过页面展示的默认数组defaultList或用户选择的数据数组multipleSelection赋值得来的),就会出现一个对象对另一个对象的影响,因此不得不使用了JSON.stringify和JSON.parse。

    3、关于multipleSelection,这个是用了element-ui中el-table的多选功能。正是这个功能才是能实现单笔导出或多笔批量导出的关键,当选择了单笔或多笔时,multipleSelection存储的就是你选择的数据(详见element-ui的表格组件API),然后判断该数组是否为空,若为空,则默认导出列表的所有数据,若不为空,则导出选择的列表数据:

    let listArr = params.multipleSelection.length > 0 ? JSON.parse(JSON.stringify(params.multipleSelection)) : JSON.parse(JSON.stringify(params.defaultList));

    4、网上还有一种解决方案,详见vue2.0 + element UI 中 el-table 数据导出Excel等等,此类方案倒没有本文的解决方案那么麻烦,但有一个问题就是无法自行选择具体导出表格哪些列的数据,它是一股脑将表格的所有数据都导出了,包括对表格数据的一些按钮操作如修改按钮、删除按钮等,甚至将表格第一列的checkbox复选框也导出了,虽然插件xlsx 有一个参数display为true时可以将隐藏的行和单元格的数组不被解析(具体使用方法没有用过,不甚了解),但如果将表格的行或单元格设置为隐藏,那我们还在页面中展示数据干嘛?显示,这种解决方案虽然简单,但灵活度不够,适用于比较简单的只展示数据的表格的导出。

    本文参考:

    https://blog.csdn.net/xiaoshihoukediaole/article/details/81296327

    https://www.jianshu.com/p/6edf74f65fc1

    作者:小坏

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。

    展开全文
  • 安装windows xp时,如果设置了一个管理员帐户,那么系统内置...然后再把它请到台前来,以下便是具体方法:①使用“传统登录提示”登录 启动系统到欢迎屏幕时按两次“ctrl+alt+delete”组合键,出现的登录中输入A

    <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

     

      安装windows xp时,如果设置了一个管理员帐户,那么系统内置没有密码保护Administrator管理员帐户是不会出现在用户登录列表中的,虽然它身在幕后,可却拥有系统最高权限,为了方便操作及保证系统安全,可以先给它设置密码,然后再把它请到台前来,以下便是具体方法:
    使用传统登录提示登录
      启动系统到欢迎屏幕时按两次“ctrl+alt+delete”组合键,在出现的登录框中输入Administrator单击更改用户登录或注销的方式,去掉使用欢迎屏幕前的复选框,单击应用选项即可在启动时直接输入Administrator帐户名及密码登录。
    在登录的欢迎屏幕显示Administrator帐户
      单击开始运行输入regedit后回车定位到
    “[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/WindowsNT/CurrentVersion/Winlogon/SpecialAccounts/UserList]”
    分支,将右边的Administrators的值改为“1”,即可让Administrators帐户出现在登录的欢迎屏幕上。
    自动登录到Administrator帐户
      单击开始运行输入“control.exe userpasswords2”后回车,在打开的用户帐户窗口去掉要使用本机用户必须输入密码前的复选框,按应用后,在弹出的自动登录窗口中输入Administrator帐户密码,按两次确定即可。注意:如果原来就设置了其它帐户自动登录,应该选中要使用本,用户必须输入密码前的复选框按应用后,再去掉选中的复选框,也可以修改注册表实现自动登录,不过没有以上方法方便。
      当然如果不要Administrator帐户,可以依次打开开始控制面板管理工具计算机管理计算机管理窗口中选中帐号已停用前的复选框,按确定即可停用Administrator帐户。

    展开全文
  • 关于XP下显示隐藏管理员账号

    千次阅读 2010-11-30 08:33:00
    虽然它身幕后,可却拥有系统最高权限,为了方便操作及保证系统安全,可以先给它设置密码,然后再把它请到台前来。以下便介绍具体方法。 <br />1.使用“传统登录提示”登录 启动系统到欢迎屏幕时,按两...

    安装Windows XP时,如果设置了一个管理员账户,那么系统内置没有密码保护的Administrator管理员账户是不会出现在用户登录列表中的。虽然它身在幕后,可却拥有系统最高权限,为了方便操作及保证系统安全,可以先给它设置密码,然后再把它请到台前来。以下便介绍具体方法。

    1.使用“传统登录提示”登录
    启动系统到欢迎屏幕时,按两次“Ctrl+Alt+Delete”组合键,在出现的登录框中输入Administrator账户的用户名和密码即可。也可以单击“开始→控制面板”,双击“用户账号”图标,在弹出的“用户账号”窗口中,单击“更改用户登录或注销的方式”,去掉“使用欢迎屏幕”前的复选框,单击“应用选项”即可在启动时直接输入Administrator账户名及密码登录。

    2.在登录的欢迎屏幕显示Administrator账户

    单击“开始→运行”,输入regedit后回车,打开注册表编辑器,依次展开“HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Winlogon/SpecialAccounts/UserList”分支,将右边的Administrator的值改为1,即可让Administrator账户出现在登录的欢迎屏幕上。

    3.自动登录到Administrator账户

    单击“开始→运行”,输入control userpasswords2后回车,在打开的“用户账户”窗口去掉“要使用本机,用户必须输入密码”前的复选框,按“应用”后,在弹出的“自动登录”窗口中输入Administrator账户密码(如图1),按两次“确定”即可。注意:如果原来就设置了其它账户自动登录,应该先选中“要使用本机,用户必须输入密码”前的复选框,按“应用”后再去掉选中的复选框。也可以修改注册表实现自动登录,不过没有以上方法方便。



    当然,如果不需要Administrator账户,可以依次打开“开始→控制面板→管理工具→计算机管理”,在“计算机管理”窗口,展开“系统工具→本地用户和组→用户”,在“用户”右边窗口双击Administrator账户,在弹出的“属性”窗口中选中“账号已停用”前的复选框(如图2),按“确定”即可停用Administrator账户。

    展开全文
  • 机房收费总结

    热门讨论 2015-08-24 17:52:28
    首先,登录窗体:   ... 一、一般情况下,为了拉下收起组合框的下拉列表,需要用键盘鼠标进行操作,而有时我们希望程序运行的某个时刻自动拉出下拉列表(比如登录窗体自动弹出所有用户)
  • C#常用控件1

    2018-12-24 20:07:41
    您可以使用标签向文本框、列表框组合框等添加描述性标题。 也可以编写代码,使标签显示的文本为了响应运行时事件而作出更改。 例如,如果应用程序需要几分钟时间处理更改,则可以标签中显示处理状态的消息。 ...
  • CTLCOLOR_LISTBOX 列表框 CTLCOLOR_MSGBOX 消息框 CTLCOLOR_SCROLLBAR 滚动条 CTLCOLOR_STATIC 静态控件 表2 nCtlColor的类型值与含义 作为一个简单的例子,观察以下的代码: BOOL CUi5Dlg::OnInitDialog() { /...
  • 使用组合框函数可以在组合框中显示获取不同类型的数据。 通用对话框函数(Common Dialog Box) 通用对话框是在通用对话框库中定义的,其功能是用来完成一些通用的任务,比如打开文件、打印文档等。通用对话框为...
  • Visual Studio程序员箴言--详细书签版

    热门讨论 2012-10-16 20:37:39
    技巧3.6 使用“查找”组合框在当前文档中进行快速查找 60 技巧3.7 自定义“查找”组合框(Ctrl+D)搜索 60 3.2.2 快速替换 61 技巧3.8 使用Ctrl+H键打开“快速替换”窗口 61 技巧3.9 首次搜索到匹配项之后...
  • 具有K均值聚类和DBSCAN的CitiBike数据网络分析 该存储库使用网络科学方法和聚类技术检查... •从采样数据中起始和结束站点ID的组合列表中,将所有唯一的起始和结束站点ID及其相应的站点名称,纬度和经度提取到新的数
  • VB控件属性使用大全

    2011-12-15 12:02:34
    (3)在列表框中找到需要添加的控件名称,单击控件名称左侧的复选框; (4)使用同样的方法选择需要添加的其它控件; (5)单击“确定”按钮,即可将所选ActiveX控件添加到工具箱里。 窗体(FORM)的常用属性 属性 ...
  • 修改BUG:超级列表框在属性“整行选择”为真时,鼠标单击第一列右面也会导致第一列中的选择框被选中取消选中。 21. 修改BUG:Sqlite3数据库支持库中“Sqlite数据库.取错误文本()”返回的文本是UTF-8编码(应是GB...
  • (1)选择“从行首开始匹配”,“查找内容”组合框中出现字符“^”,表示待查找字符串必须出现文本中一行的行首。 (2)选择“字符范围中”,那么“^”后会增加一对括号“[]”,当前插入点括号中。括号...
  • excel的使用

    2012-11-25 17:06:01
    一单元格内填入“*”“~”等符号,然后单击此单元格,向右拖动鼠标,选中横向若干单元格,单击“格式”菜单,选中“单元格”命令,弹出的“单元格格式”菜单中,选择“对齐”选项卡,水平对齐下拉列表中...
  • LINGO软件的学习

    2009-08-08 22:36:50
    当用隐式罗列方式时,只需集成员列表中输入首成员和末成员,而中间的成员由LINGO产生。 另一方面,派生集是由其它的集来创建。这些集被称为该派生集的父集(原始集其它的派生集)。一个派生集既可以是稀疏的,也...
  • rfc中文翻译

    2017-11-21 13:51:15
    请赐教并将您的建议发送到工作组邮件列表rem-conf@es.net直接给作者。 本文中的关键字“必须”,“必须不”,“要求的”,“应该”,“不应该”,“会”,“不会”, “建议”,“或许”,“可选的” RFC 2119 ...
  • 千里马酒店前台管理系统V7使用手册

    热门讨论 2011-06-16 14:09:38
    2.7.6 组合查询 22 2.7.7 表单打印 24 §第三章 房态控制 Room Status Controling 26 3.1 客房状态 Room Status 26 3.2 远期房态 Room Forcasting 27 3.2.1 房间预测图 Room Plan 27 3.2.2 房类预测表 Room Type ...
  • 其实前面介绍图片显示、图片链接的时候为了清晰就是放在表格中显示的。 图片 描述 百度 表情 Github的Markdown语法支持添加emoji表情,输入不同的符号码(两个冒号包围的字符)可以显示出不同的表情。...
  • 其实前面介绍图片显示、图片链接的时候为了清晰就是放在表格中显示的。 图片 描述 百度 表情 Github的Markdown语法支持添加emoji表情,输入不同的符号码(两个冒号包围的字符)可以显示出不同的表情。...
  • WINRAR5.0正式注册版

    2013-10-10 10:14:03
    你可以压缩对话框中使用 "RAR 5.0" 选项命令行中 使用 -ma 开关创建 RAR 5.0 压缩文件。 较老的软件,包括老版本的 WinRAR,不能解压 RAR 5.0 压缩文件,所以如果你计划把 一个压缩文件发送给其他人,则需要...
  • click:一个通过组合的方式来创建精美命令行界面的包。 cliff:一个用于创建命令行程序的框架,可以创建具有多层命令的命令行程序。 clint:Python 命令行程序工具。 docopt:Python 风格的命令行参数解析器。 ...
  • 保密期内的保密论文和技术保护期限内的论文外,允许论文被查阅和借阅,可以公布(包括以电子信息形式刊登)论文的全部内容中、英文摘要等部分内容。论文的公布(包括以电子信息形式刊登)授权东南大学研究生...
  • 一个Package 可以包含ROS执行时处理的文件(nodes),一个ROS的依赖库,一个数据集合,配置文件一些有用的文件一起。 Manifests:Manifests (manifest.xml) 提供关于Package元数据,包括它的许可信息和Package...
  • awesome-cpp 就是 fffaraz 发起维护的 C++ 资源列表,内容包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。 中文版由开源前哨和CPP开发者微信公号团队维护更新, GitHub 已...
  • OpenGL扩展注册表(http://oss.sgi.com/projects/projects/ogl-sample/registry)中可以看到扩展的列表,其中定义了命名习惯,新扩展的指导方针和其他相关的扩展讨论。访问扩展是一个平台相关的任务,而可用的扩展取...
  • windows 程序设计

    2011-07-24 21:16:30
    因此,我建议您开发程序(或在进行其它工作)时使用执行Windows的机器来跑Windows应用程序。 第二,您应了解C语言。如果要写Windows程序,一开始却不想了解C语言,那不是一个好主意。我建议您文字控制台环境中...
  • 数据汇交软件

    2019-01-17 11:30:51
    进入项目统计模块后,单击“单位上报”选项卡,然后“项目类别”组合框中选择要统计的类别,并输入要统计的年份,最后单击“开始统计”按钮,系统将指定类别的项目按单位要求统计出来。如果单击“国家上报”选项卡...
  • 2004-2010软考程序员真题

    热门讨论 2012-09-27 12:33:00
     30、Windows98的"我的电脑"窗口中,若已选定了文件文件夹,为了设置其属性,可以打开属性对话框的操作是  A)用鼠标右键单击"文件"菜单中的"属性"命令  B)用鼠标右键单击该文件文件夹名,然后从弹出的快捷...
  • 此基础上,根据公司项目情况,我又开发了Tree树形结构功能,安装插件之后,会ideastudio主页上增加一个VVScopeTree,方便所有模块业务进行管理。 注:Version Control中commit弹框,输入message使用插件...

空空如也

空空如也

1 2 3 4 5
收藏数 84
精华内容 33
关键字:

为了在组合框或列表框