2

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

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

这是我用来将 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无法理解的错误?

4

3 回答 3

2

我有时在使用Import-Csv.

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

要修复它,而不是使用:

  1. 文件
  2. 另存为
  3. CSV(逗号分隔)(*.csv)

我执行以下操作:

  1. 启动一个新的 Excel 实例
  2. 复制我的 Excel 电子表格的内容
  3. 将内容粘贴到新的空白 Excel 文档中
  4. 另存为 CSV(逗号分隔) (*.csv)

之所以可行,是因为当我们执行“复制粘贴”时,我们实际上只复制了具有实际内容的单元格,而“另存为”导出也是空的列和行。

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

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

于 2015-06-01T12:15:57.427 回答
0

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

于 2013-06-20T21:33:08.033 回答
0

您是否尝试过手动向 Import-CSV 提供标头?

我在同样的问题上苦苦挣扎,但是 excel 不是我等式的一部分,而且我的文件没有可以使用的标题。除非我手动指定 Import-CSV 的 -Header 属性,否则我会收到相同的错误

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

我倾向于使用 Out-GridView 和一些猜测来验证它是否按预期工作。因此,如果我知道有 30 个或更少的字段,我可以执行以下操作:

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

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

如果您发现您的文件定义的标题在幕后做了一些邪恶的事情,您可以跳过第一行,然后分配您的自定义标题文本或范围。

于 2019-03-06T15:34:06.433 回答