【问题标题】:PowerShell select range of cells from Excel file and convert to CSVPowerShell 从 Excel 文件中选择单元格范围并转换为 CSV
【发布时间】:2020-01-25 18:44:21
【问题描述】:

我想从 Excel 工作表中提取一系列单元格并以 CSV 格式输出以供进一步使用。到目前为止,我已经写了这个:

script.ps1:

$excel = New-Object -ComObject Excel.Application
$WB = $excel.Workbooks.Open('c:\users\me\desktop\temp\nouveau dossier\superstore.xls')
$WS = $WB.Sheets.Item(1)
$data = $WS.Range("A1", "E10")
$data | select text | Export-Csv 'YATry.csv' -NoTypeInformation -Delimiter ';'
$excel.Quit()

但我得到的是:

“文本” “行号” “订单号” “订购日期” “发货日期” “船舶模式” “1” “CA-2016-152156” “2016-11-08” “2016-11-11” “二等” “2” “CA-2016-152156” “2016-11-08” “2016-11-11” “二等” “3” “CA-2016-138688” “2016-06-12” “2016-06-16” “二等” [...]

我错过了什么?

【问题讨论】:

  • 您是否尝试过在 Excel 中执行此操作?
  • 我一直在将选定的单元格范围手动复制粘贴到新工作簿中的临时表中,然后将该工作簿导出为 *csv,然后在记事本 ++ 中打开该文件以获取数据.我想自动转换。
  • 代码中“选择文本”的目的是什么?
  • 您向我们展示的是一个只有一个字段的 CSV 文件。该字段的名称是“文本”。这在第一行中显示为前面。接下来的几行是您在 Excel 工作簿中选择的表中的列标题的名称。这大概就是您希望在 CSV 的第一条记录中看到的内容,用分号分隔。这不是一个答案,但我希望它有所帮助。
  • 选择文本仅使用所需范围内的值,否则会包含大量开销。

标签: excel powershell csv


【解决方案1】:

试试这个作为替代方法。我还没有在你的环境中尝试过这个,但类似的东西对我有用。希望这会有所帮助。

$excel = New-Object -ComObject Excel.Application
$WB = 
  $excel.Workbooks.Open('c:\users\me\desktop\temp\nouveau dossier\superstore.xls')
$WS = $WB.Sheets.Item(1)
$data = $WS.Range("A1", "E10")
$XLcsv = 6       #  Parameter to tell SaveAs to produce a CSV format
$data.worksheet.SaveAs('c:\users\me\desktop\temp\nouveau dossier\YATry.csv', $XLcsv)
$excel.Quit()

SaveAs 是 Excel 应用程序中的一种方法,它执行交互式用户通过单击“另存为”执行的操作。第二个参数告诉 SaveAs 生成什么格式,在本例中为 CSV。

棘手的部分是弄清楚您必须说 $data.worksheet 而不是 $data 才能访问 SaveAs 方法。

【讨论】:

  • 我收到一个错误,因为 $data 本身不是工作簿,并且没有方法。这是一个 PS 脚本,所以我会先考虑将其转换为 WB。
  • 它不起作用。它说(翻译的)不能调用 Null 对象中的方法。然而,我的
  • 它不起作用。它说(翻译的)不能调用 Null 对象中的方法。然而,我的行:$data |select value2 | Export-csv 'YA.csv' -notypeinformation -delimiter ';' 仍然产生单列引用值。我已经更改了 ("A1:E10") 的范围,没有任何区别。我尝试复制粘贴到另一个工作表并从那里保存,但我什么也没得到。
  • 对不起。我说的是“工作簿”,其中“工作表”是正确的。我要编辑我的答案。
  • 它不尊重所要求的范围,而是导出整个工作表。
猜你喜欢
  • 2016-02-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-22
  • 1970-01-01
  • 2012-08-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多