在将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
无法理解的转化中犯了错误吗?
答案 0 :(得分:2)
我有时会在使用Import-Csv
时遇到这种情况。
将.xlsx保存为.csv时,结果是转换问题。
要修复它,而不是使用:
我执行以下操作:
这样做的原因是因为当我们进行“复制粘贴”时,我们只会有效地复制具有实际内容的单元格,而“另存为”导出也会清空列和行。
通过比较工作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
使用高于实际字段数的范围有些陷阱,但这是一个有用的诊断技巧。
如果发现文件定义的标头在后台做得很邪恶,则可以跳过第一行,然后分配自定义标头文本或范围。