序
好久没有写博客了。之前本打算写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相关的系列文章帮你提高搬砖效率。 有什么需求的也可以直接私信我,我会把我所知道的分享给大家。==
原文链接: 一天一会 PowerShell(二) 之 Excel 篇 - (树梢的鱼)
Introducing the PowerShell Excel Module -- Dr Script ↩︎