【问题标题】:Using powershell fetch data from Excel and write it to CSV file使用 powershell 从 Excel 获取数据并将其写入 CSV 文件
【发布时间】:2020-04-30 15:39:53
【问题描述】:

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

Excel 文件的屏幕截图

我编写了以下 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

【问题讨论】:

    标签: powershell


    【解决方案1】:

    查看 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()
    

    【讨论】:

      猜你喜欢
      • 2021-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      • 1970-01-01
      • 2013-05-12
      • 1970-01-01
      相关资源
      最近更新 更多