【发布时间】:2015-08-27 20:37:51
【问题描述】:
我正在尝试使用 Powershell 4.0 将包含多个工作表的 Excel .xls 文件转换为 .csv。我知道 for each 循环中的 SaveAs 措辞不正确,并且错误指向第 17 行和第 9 个字符,我只是不知道如何修复它或如何解释错误代码 0x800A03EC。
这是脚本:
Function ExportWSToCSV ($inputWorkbookPath, $outputFilePrefix, $outputDirectory)
{
#Start Excel invisibly without pop-up alerts.
$inputWorkbookPath = "R:\Unclaimed Property\NC State\Jun 2015\" + `
"NC_RAW_JUL1986thruMAR2013" + ".xls"
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $false
$excel.DisplayAlerts = $false
#Open Excel file.
$workBook = $excel.Workbooks.Open($inputWorkbookPath)
foreach ($workSheet in $workBook.Worksheets)
{
$n = $inputWorkbookPath + "_" + $workSheet.Name
$workSheet.SaveAs($outputDirectory + $n + ".csv", 6)
}
$excel.Quit()
}
ExportWSToCSV -inputWorkbookPath "R:\Unclaimed Property\NC State\Jun 2015\NC_RAW_JUL1986thruMAR2013.xls" `
-outputFilePrefix "output_" `
-outputDirectory "R:\Unclaimed Property\NC State\Jun 2015\"
这是错误:
Exception calling "SaveAs" with "2" argument(s): "Exception from HRESULT: 0x800A03EC"
At \\ncdfs1\documents$\ANDREWN\My Documents\PSscript_for_NC.ps1:17 char:9
+ $workSheet.SaveAs($outputDirectory + $n + ".csv", 6)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ComMethodTargetInvocation
【问题讨论】:
-
您的路径看起来格式不正确。看起来您正在使用
$n构建它,但随后您再次使用$outputDirectory添加路径。我建议您加入循环只是为了查看$outputDirectory + $n + ".csv"输出的样子。你应该看到一条看起来很糟糕的路径。你能从$n中删除$inputWorkbookPath + "_" +吗? -
我支持@Matt。我刚刚在 PS ISE 中使用测试文件对此进行了测试,并保持简单。
.SaveAs()方法工作正常。这是您生成的路径可能有点不靠谱。
标签: excel powershell csv export-to-csv powershell-4.0