无法使用Import-Csv导入CSV文件

时间:2013-06-20 21:16:53

标签: powershell

在将excel转换为csv文件后,我正在尝试使用Import-csv导入csv文件。我收到以下错误。

Import-Csv:无法处理参数,因为参数“name”的值无效。更改“name”参数的值并再次运行该操作。

这是我用来将xls文件转换为csv并尝试在命令提示符下导入csv文件的脚本

$dst="O:\UserCert\target\"
$Excel = New-Object -Com Excel.Application
$Excel.visible = $False 
$Excel.displayalerts=$False 
foreach ($file in gci "O:\UserCert\*.xls"){
     $wb = $excel.Workbooks.Open($file.fullname)
     $wb.SaveAs($dst + $file.Basename + ".csv",6)
     $wb.Close($true)
}
$excel.Quit()

我在Import-csv无法理解的转化中犯了错误吗?

3 个答案:

答案 0 :(得分:2)

我有时会在使用Import-Csv时遇到这种情况。

将.xlsx保存为.csv时,结果是转换问题。

要修复它,而不是使用:

  1. 文件
  2. 另存为
  3. CSV(逗号分隔)(* .csv)
  4. 我执行以下操作:

    1. 启动新的Excel实例
    2. 复制我的Excel电子表格的内容
    3. 粘贴新空白Excel文档中的内容
    4. 另存为CSV(逗号分隔)(* .csv)
    5. 这样做的原因是因为当我们进行“复制粘贴”时,我们只会有效地复制具有实际内容的单元格,而“另存为”导出也会清空列和行。

      通过比较工作CSV和非工作CSV,我们可以看到,在我的情况下,有两个额外的列和一些空行被创建(可能是空的列曾经是内容 )。

      因此,另一种解决方案是删除内容附近的空列和行,然后使用正常保存。或者,编辑CSV文件并删除每行的两个空列。

答案 1 :(得分:0)

如果CSV文件格式有问题,您是否通常会收到该错误消息,是否在记事本或文本编辑器中打开了一个并且看起来是否正确?我认为问题可能是由于您创建CSV的方式,您将工作簿保存为CSV,但工作簿无法仅转换为CSV工作表。 Excel通常只保存活动工作表。您的Excel文件是否包含多个工作表?

答案 2 :(得分:0)

您是否尝试过手动为Import-CSV提供标题?

我遇到了同样的问题,但是excel并不是我的方程式的一部分,并且我的文件没有标头。除非手动指定Import-CSV的-Header属性,否则我会收到相同的错误

另外,当我不知道标题是什么时,我使用范围来创建动态标题。您唯一需要知道的是有多少个字段。需要注意的是,如果护林员高于字段数,它们将显示为空白列。

我倾向于使用Out-GridView和一些来宾验证来验证它是否按预期工作。 因此,如果我知道不超过30个字段,则可以执行以下操作:

Import-CSV "filehere.csv" -Header (1..30) | Out-GridView

使用高于实际字段数的范围有些陷阱,但这是一个有用的诊断技巧。

如果发现文件定义的标头在后台做得很邪恶,则可以跳过第一行,然后分配自定义标头文本或范围。