使用Powershell从Excel提取数据并将其写入CSV文件

时间:2020-04-30 15:39:53

标签: powershell

Hi试图从Excel文件中获取数据,然后使用powershell将其另存为CSV。我需要B列是第二行中D列的标题和值。我有53行。

Excel文件的屏幕截图

enter image description here

enter image description here

我写了下面的powershell代码,该代码保存为CSV文件,但是编码不正确。当我使用Terraform csvcode时,会引发错误。

$strPath = "C:\project.xlsx"
$AssetInv = "C:\project.txt"
$AssetInvcsv = "C:\project.csv"
$objExcel = New-Object -ComObject Excel.Application
$objExcel.Visible = $false

$WorkBook = $objExcel.Workbooks.Open($strPath)
$worksheet = $workbook.sheets.item("Sheet1")

$c = 2
for ($r = 3; $r -le 53; $r++)
{
    $Data = 0
    $Data = $worksheet.Cells.Item($r, $c).Value2
    $Data1= [string]$Data
    $Data1 + "," | Out-File -filepath $AssetInv -append -NoNewline -Encoding utf8
}
$c = 4
for ($r = 3; $r -le 53; $r++)
{
    $Data = 0
    $Data = $worksheet.Cells.Item($r, $c).Value2
    $Data1= [string]$Data
    $Data1 + "," | Out-File -filepath $AssetInv -append -NoNewline -Encoding utf8
}
$objExcel.quit()

我可以通过将文件另存为TXT文件,然后再次导入和导出为CSV来纠正此问题。我不想将其另存为txt,然后再将其另存为CSV。我该怎么办?

import-csv $AssetInv -delimiter "," | export-csv $AssetInvcsv -NoTypeInformation

1 个答案:

答案 0 :(得分:0)

看一下Export-Csv cmdlet的帮助文件。但是,如果这是一个真实的.xl *文件,则Excel OM提供打开.xl *的方法,执行操作并另存为.csv

$excel               = New-Object -ComObject Excel.Application
$excel.Visible       = $true
$excel.DisplayAlerts = $true

$wb    = $excel.Workbooks.Open($filepath)
# Do all your Excel file manipulations here

# Save, close, clean-up
$wb.SaveAs('D:\Temp\FileData.csv',6,'')
$excel.Quit()
[System.Runtime.InteropServices.Marshal]::ReleaseComObject([System.__ComObject]$excel)
[System.GC]::Collect()
[System.GC]::WaitForPendingFinalizers()
相关问题