PowerShell 技能连载 - 使用超棒的 Export-Excel Cmdlet(第 3 部分)
这是我们关于 Doug Finke 的强大而免费的 “ImportExcel” PowerShell 模块的迷你系列文章的第 3 部分。在学习这个技能之前,请确保安装了该模块:
1 | PS> Install-Module -Name ImportExcel -Scope CurrentUser -Force |
在第 2 部分中,我们检查了由于数字自动转换导致的错误解释。当原始数据”看起来像“ Excel 公式时会导致另一个问题,它们会被转换为公式并且会在等等打开时出现问题。
以下是重现该问题的示例:一些记录包含以 “=)” 开头的文本,会导致 Excel 认为它是一个公式:
1 | # any object-oriented data will do |
当您运行这段代码时,Excel 将打开但是立即报告非法格式。原始数据将会丢失。
这个问题无法通过一个开关参数解决。相反,您需要手动重新格式化单元格,这给了您很大的灵活性。以下是总体的策略:
- 使用
Export-Excel
创建 .xlsx 文件,但不是指定 -Show(在 Excel 中打开文件),而是使用-PassThru
。这样就得到了 Excel 对象模型。 - 使用对象模型对单元格进行任意更改
- 使用
Close-ExcelPackage
将更改保存到文件中。您现在可以指定-Show
,并在 Excel 中打开结果。
1 | # any object-oriented data will do |
当您运行这段代码时,Excel 工作簿打开时不会报错,并且第一列能够正确地显示内容。这是由于我们显式地将第一列格式化为“文本”。然后,一旦格式被设置为“文本”,那么公式内容就会作为单元格值插入。
您不会受到“公式”错误信息,也不必通过在其周围添加引号来“屏蔽”内容。
这个示例演示了如何后期处理 Excel 工作簿并且在将结果保存到文件并在 Excel 中打开结果之前增加、更改、重新格式化独立的单元格。
PowerShell 技能连载 - 使用超棒的 Export-Excel Cmdlet(第 3 部分)
http://blog.vichamp.com/2019/08/30/using-awesome-export-excel-cmdlet-part-3/