【发布时间】:2017-11-01 15:46:04
【问题描述】:
我需要将 csv 文件导入我的 PS 脚本。在同一个脚本中,我有一个将 xlsx 文件转换为 csv 的函数,我需要导入该函数。但我找不到办法做到这一点。我尝试了三种方法:
$CSVLicence = Import-Csv (ConvertXLSX -File $Licence) -Delimiter "," -Encoding UTF8
其中 ConvertXLSX 是将 xlsx 转换为 csv 的函数,$Licence 是在脚本开头定义的变量。第二种方法是这样的:
$CSVfile = ConvertXLSX -File $Licence
$CSVLicence = ImportCsv $CSVfile -Delimiter "," -Encoding UTF8
在这两种情况下,我都会在“Import-Csv”之后的列上收到一条错误消息,该参数 Path 为空或为空。
第三种方法是从字面上定义路径,这并不是一个好的解决方案,但应该可以工作,如果文件的执行程序在正确的文件夹中运行它并使用正确的文件名。在这种情况下,我在“Import-Csv”cmdlet 前面收到错误“成员“Proemail Exchg Business”已经存在”
csv 文件被创建,它看起来和它应该的一样,所以转换函数显然没有错误。
ConvertXLSX 函数定义如下:
$Licence = "licence"
Function ConvertXLSX ($File)
{
$PWD = "r:\Licence\"
$ExcelFile = $PWD + $File + ".xlsx"
$Excel = New-Object -ComObject Excel.Application
$Excel.Visible = $false
$Excel.DisplayAlerts = $false
$wb = $Excel.Workbooks.Open($ExcelFile)
foreach ($ws in $wb.Worksheets | where {$_.name -eq "Pridani"})
{
$ws.SaveAs($PWD + $File + ".csv",6)
}
$Excel.Quit()
}
ConvertXLSX -File $Licence
函数成功创建csv文件,没有任何问题
【问题讨论】:
-
Import-Csv仅适用于文件。您需要将ConvertXLSX的输出写入文件,然后将其导入。或者,使用ConvertFrom-Csv
标签: excel powershell csv