PowerShell: 如何使用powershell处理Excel
序
“你要悄悄的学Python,然后惊艳所有人” 真的需要这样吗?现在我告诉你不用偷偷学Python,几条powershell命令就够了。
好久没有写博客了。之前本打算写PowerShell的系列文章,但是正巧在这段时间啊,有一个之前的同学问我关于一个Excel处理的问题。同时他还向我咨询了很多关于Python的一些知识啊。我还以为是他想转行当程序员,但是后来经过深入的这个了解之后,发现原来他是在工作过程当中遇到了一些Excel处理上的一些小问题。这其中涉及到Excel里边的一些分组啊排序啊,以及关键信息提取类似的一些操作。
作为一个PowerShell的老司机,我是知道怎么操作这个CSV的。
比如:使用 Import-csv 把数据导入内存中。
或者使用Export-CSV 把你计算的结果导出到CSV中。
但是对于Excel呢?PowerShell本身并没有内置任何命令可以直接操作它。
好在我们所处的时代并不缺乏大神。一个叫 Doug Finke 的牛人在Github 上发起了一个叫 ImportExcel 的项目。我在无意中通过《Introducing the PowerShell Excel Module》1 发现了这个项目。
下面直接来干货了:
Import-Excel 的前提条件
PowerShell V5 以及以上版本
并且安装ImportExcel不需要先行安装Excel,这点是不同于其它Excel相关的组件的。这样他就可以运行在Windows服务器上并不需要安装Excel。
安装步骤
通过命令安装
- 只为当前登陆用户安装(推荐)
Install-Module ImportExcel -scope CurrentUser
- 为机器上所有用户安装,这个需要管理员权限
Install-Module ImportExcel
手动安装
- 下载安装包(.nupkg格式)
- 修改后缀名为 .zip
- 解压之后把相关文件放到如下目录中 C:\Program Files\WindowsPowerShell\Modules\ImportExcel\7.1.0
目录如果不存在,创建之。版本号根据你自己下载的版本号创建。
创建好之后如下:
测试安装是否成功
运行以下命令:
Get-Module -Name ImportExcel
如果显示以下结果说明安装成功了。
小试牛刀
现在我们可以像生成 .csv 文件一样生成 .xlsx 文件了。
#获取当前目录下面的所有文件/目录并导出成Excel表格
# -show 自动打开,如果当前机器上安装了Excel的话
Get-ChildItem . | Export-Excel c:\temp\files.xlsx -Show
加个饼图试一下
运行以下命令
Get-ChildItem | Where Extension | Export-Excel C:\temp\files1.xlsx -Show -PivotRows Extension -PivotData @{Extension="count"} -ChartType PieExploded3D# Where Extension 把没有后缀名或者目录排除掉
# -Show 导出之后直接打开Excel
# -PivotRows Extension 和 -PivotData @{Extension="count"} 这两个告诉Excel告诉代码如何生成Pivot表(统计不同扩展名的文件的个数)
# -ChartType 指定生成的饼图的类型 为 PieExploded3D
看下效果图:
- 原始数据
- 生成的饼图
怎么样? 是不是高大上?搬砖的你是不是立马想到了很多应用场景来解放你双手?
感受妹子们崇拜的目光吧 哈哈哈
处理已有Excel数据
只要之前用过Import-csv 的同学应该很容易就能入手,语法简直是一模一样啊。
我们先读取一下先前生成的表格试试:
$files=Import-Excel .\files.xlsx$files | ft -AutoSize -Property Name,FullName,Extension
然后我们对这个表格稍微作一下处理
$files | %{ $_.Extension="$($_.Extension).txt"; $_ } | Export-Excel c:\temp\files-processed.xlsx -Show
结束语
平时日常生活中很多地方会用到Excel处理比如数据统计,财务处理,多个Excel表合并,定期报表导出等等
如果仅仅是为了这些去学Python,学习成本还是蛮高的尤其是对没有任何变成经验的人来说,而用PowerShell来处理可能就是几条命令,最关键的是PowerShell现在是Windows内置的。
当然我在这里没有褒贬PowerShell/Python的意思,对我来讲适合自己的才是最好的。
我会定期更新PowerShell相关的系列文章帮你提高搬砖效率。
有什么需求的也可以直接私信我,我会把我所知道的分享给大家。
整理了部分近期发布的文章仅供大家参考:
- 为什么大神们的文章看起来那么酷?除了写的好还使用了生动的动图(gif)。一款【免费】的动图工具screentogif了解一下
- Powershell:使用PSCustomObject,序列化执行结果
- PowerShell: 为啥大神们的PowerShell窗口还有智能提示?因为他设置了这个
- PowerShell: 远程管理除了知道Invoke-Command,还应该掌握Enter-PSSession这个命令
- PowerShell: RDP管理服务器效率低下,使用invoke-command同时维护多台服务器不再难
- PowerShell:用原生PowerShell就能解决访问web资源时的ADFS认证问题
- PowerShell:不需要学Python,使用powershell也能处理Excel提高办公效率
- PowerShell:作为一个PowerShell菜鸟,如何快速入门?掌握这些就够了
Introducing the PowerShell Excel Module – Dr Script ↩︎
PowerShell: 如何使用powershell处理Excel相关推荐
- PowerShell: 作为一个PowerShell菜鸟,如何快速入门?掌握这些就够了
PowerShell 一 初级篇 1. 我为什么要写PowerShell? 2. 开始我们的PowerShell之旅 a) 打开PowerShell >使用鼠标打开 >使用键盘打开 b) ...
- Windows PowerShell:Windows PowerShell的简介、入门、使用方法之详细攻略
Windows PowerShell:Windows PowerShell的简介.入门.使用方法之详细攻略 目录 Windows PowerShell的简介 PowerShell VS Unix Sh ...
- 初识powershell、nuget powershell 调试
初识powershell.nuget powershell 调试 补充 此文仅当做powershell的初步认识体验,关于nuget包里此脚本的使用官方已在vs2017停止支持,请看此文文末 前言 老 ...
- anaconda prompt和cmd和powershell和anaconda powershell prompt和git bash有什么区别
anaconda prompt和cmd和powershell和anaconda powershell prompt和git bash有什么区别? anaconda prompt和cmd和powersh ...
- PowerShell:如何用PowerShell创建WinForm窗体?-在PowerShell中使用GUI界面
从印度小哥那里受到启发,PowerShell不止可以做批处理,自动化.还能做界面做GUI,也能实现很好的交互.因为PowerShell是可以和.Net 程序无缝集成的.所以.Net能用的东西在Powe ...
- PowerShell_5_零基础自学课程_5_自定义PowerShell环境及Powershell中的基本概念
据我个人所知,windows下的cmd shell除了能够通过修改系统参数来对其中的环境变量进行改变外,其环境的可自定义性相对来说很困难,而在Linux环境中,可以通过修改/etc目录下的某些配置文件 ...
- powershell禁用计算机,PowerShell 因为在此系统中禁止执行脚本 解决方法
在Powershell直接脚本时会出现: 无法加载文件 ******.ps1,因为在此系统中禁止执行脚本.有关详细信息,请参阅 "get-help about_signing". ...
- powershell awk_谈谈 PowerShell
万事万物,有始有终.直从萌芽拔,高自毫末始. 所谓的 Shell,无非是应用程序与操作系统内核进行交互的一个中间程序而已.我本人玩电脑也有很久一阵子了,最开始接触到的就是Windows 7 操作系统, ...
- 从零开始学PowerShell(9)创建PowerShell对象
我们之前有一篇文章写过如何获取对象的信息,但是从没有说过如何创建一个PowerShell对象.正巧也看到很多刚学PowerShell的朋友问起这个问题,今天就来说一说如何创建PowerShell对象. ...
- Azure PowerShell (9) 使用PowerShell导出订阅下所有的Azure VM的Public IP和Private IP
<Windows Azure Platform 系列文章目录> 笔者在之前的工作中,有客户提出想一次性查看Azure订阅下的所有Azure VM的Public IP和Private IP. ...
最新文章
- sqlmap 跑access_sqlmap注入Access
- pom.xml中的常用依赖包总结
- 探索Android中的Parcel机制(上)
- sob攻略超详细攻略_重庆旅游攻略~超详细攻略大全!必看篇!!
- Fibonacci数列第n项的log(n)算法
- 页面间的跳转,打开,关闭小技巧.
- linux--GD库安装
- 按季度分类汇总_2019年纯碱行业相关上市公司季报 与半年报情况汇总
- 电脑上怎么做pdf文件_图片怎么输出为PDF文件?两种办法教你,手机电脑都能转...
- 张震博士:SDT是未来安防发展方向
- c语言中用文件处理数据,C语言文件处理
-C语言从文件中读写格式化数据
- crc java_java实现CRC16 MODBUS校验算法
- z01、z02.....怎么解压缩
- java类的实例参数传递_获取我正在通过参数传递的相同Java类实例
- php路径伪静态化,URL地址伪静态化
- 使用Github pages+jekyll搭建自己的博客(windows版)
- 无穷大常量0x7fffffff 0x3fffffff 0x3f3f3f3f
- deeplinux 热点_在深度deepin linux系统中同时开启wifi与热点的办法
- stepmania谱面下载、安装、转谱,音游相关 osu etterna
- 爬虫千万条,守法第一条,爬虫不规范,亲人两行泪