不用安装Excel使用PSExcel自动处理Excel文件

来源:互联网 发布:mac百度搜索推荐 编辑:程序博客网 时间:2024/05/17 00:12

PSExcel是一个为Powershell开发的软件包。使用这一软件包,可以在不安装Excel的情况下,自动处理Excel文件。

该软件包的下载可通过以下网页:https://github.com/RamblingCookieMonster/PSExcel

关于其使用方法和范例可以参看以下网页:http://ramblingcookiemonster.github.io/PSExcel-Intro/


鉴于PSExcel例子太少,本文给一些补充。


我手头上有两个CSV文件,spa_test.csv和spb_test.csv。先把他们import到两个变量$spa和$spb。

> $spb=import-csv spa_test.csv

>$spb

SPA                           DEF                           GHI                           JKL
---                              ---                            ---                             ---
123                           456                           789                           123
123                           456                           789                           123
123                           456                           789                           123
123                           456                           789                           123
123                           456                           789                           123
123                           456                           789                           123


> $spb=import-csv spb_test.csv
> $spb
SPB                           DEF                           GHI                           JKL
---                             ---                             ---                             ---
999                           888                           777                           666
999                           888                           777                           666
999                           888                           777                           666
999                           888                           777                           666
999                           888                           777                           666


把$spa Export到Excel文件sp_test.xlsx中。

>del sp_test.xlsx
>$spa | export-xlsx -path .\sp_test.xlsx


确认sp_test.xlsx的内容。

>import-xlsx -path .\sp_test.xlsx

SPA                           DEF                           GHI                           JKL
---                           ---                           ---                           ---
123                           456                           789                           123
123                           456                           789                           123
123                           456                           789                           123
123                           456                           789                           123
123                           456                           789                           123
123                           456                           789                           123

如果Excel文件太大,我们可以确认其中的某一部分。

> Get-CellValue -path .\sp_test.xlsx  -worksheetName "worksheet1" -Coordinates a1:b3
SPA                                                         DEF
---                                                         ---
123                                                         456
123                                                         456


再把$spb Export到Excel文件sp_test.xlsx中。

> $spb | export-xlsx -path .\sp_test.xlsx
Failed to initialize Excel, Workbook, or Worksheet. Try -ClearSheet switch if worksheet already exists:

......

出错了。为什么?因为把数据 Export到Excel文件sp_test.xlsx时,Sheet的名称缺省为"worksheet1"。第二次做同样的操作,Sheet已经存在,所以出错。


我们可以指定其他名称来Export数据到Excel文件。比如:

> $spb | export-xlsx -path .\sp_test.xlsx -worksheet "Worksheet2"


如果我们期望覆盖"worksheet1"上的数据,可以使用ReplaceSheet选项。

> $spb | export-xlsx -path .\sp_test.xlsx -worksheet "Worksheet1" -replaceSheet
> Get-CellValue -path .\sp_test.xlsx  -worksheetName "worksheet1" -Coordinates a1:b3
SPB                                                         DEF
---                                                         ---
999                                                         888
999                                                         888

注意:ReplaceSheet将把指定Sheet上的所有数据全部删除,然后写入新的数据。


修改某个Cell或某个范围的值。

> Set-CellValue -path .\sp_test.xlsx  -worksheetName "worksheet1" -Coordinates f1:f1 -value "NEW"
> Get-CellValue -path .\sp_test.xlsx  -worksheetName "worksheet1" -Coordinates f1:f1
NEW
---
NEW


另一种显示或修改Cell数据或属性的方法

> $Excel = new-Excel -Path .\SP_TEST.XLSX

> $S="Worksheet1"


显示Cell的数据。

> $excel.workbook.Worksheets[$s].Cells.Item("a3").value
123
> $excel.workbook.Worksheets[$s].Cells.Item("b3").value
456


修改Cell的数据。

> $excel.workbook.Worksheets["Worksheet1"].Cells.Item("b3").value =999
> $excel.workbook.Worksheets["Worksheet1"].Cells.Item("b3").value
999

修改Cell的算式。

> $excel.workbook.Worksheets["Worksheet1"].Cells.Item("e3").value
> $excel.workbook.Worksheets["Worksheet1"].Cells.Item("e3").formula = "Max(a3:d3)"
> $excel.workbook.Worksheets["Worksheet1"].Cells.Item("e3").formula
Max(a3:d3)
> $excel.workbook.Worksheets["Worksheet1"].Cells.Item("e3").value


注意:算式修改是可以的,但是,直接询问该Cell的数值却没有结果。

不要担心,在Excel下打开文件,Cell(e3)的数值是正确的。



0 0
原创粉丝点击