excel - 将 TXT 转换为 CSV

标签 excel powershell csv text txt

我正在做一个项目,我需要获取一个文本文件并将其变成一个 excel 文件。到目前为止,我想出的是这个。

cls

Remove-Item -path D:\Users\zabin\OneDrive\Desktop\ITS3410\WEEK8\MainWarehouse.csv

Add-Content -path D:\Users\zabin\OneDrive\Desktop\ITS3410\WEEK8\MainWarehouse.csv -Value '"Part_Number","Cost","Price"'

$csvPath = 'D:\Users\zabin\OneDrive\Desktop\ITS3410\WEEK8\MainWarehouse.csv'


#region Excel Test
If (test-path HKLM:SOFTWARE\Classes\Word.Application) {
    Write-host "Microsoft Excel installed"
} else {
    Write-host "Microsoft Excel not installed"
}
#endregion

#region Patterns
$mainpattern1 = '(?<Partnumber>\d*\s*\w*,)(?<Cost>\d*.\d*),(?<Price>\d*.\d*)'
$mainpattern2 = '(?<Part_number>\d*-\d*-\d*),(?<Cost>\d*.\d*),(?<Price>\d*.\d*)'

#endregion

get-Content 'D:\Users\zabin\OneDrive\Desktop\ITS3410\WEEK8\MainWarehouse.csv' | #grabs the content
    Select-String -Pattern $mainpattern1, $mainpattern2 | #selects the patterns
    Foreach-Object {
        $Part_Number, $Cost, $Price = $_.Matches[0].Groups['Part_number', 'Cost','Price']



        [PSCustomObject] @{
     
     part_number = $Part_Number
     Cost = $Cost
     Price = $Price

   
    }
    $objResults | Export-Csv -Path $csvPath -NoTypeInformation -Append
    
}

一些示例数据在这里
00001143 SP,136.41,227.35
00001223 SP,48.66,81.10
00001236 SP,149.72,249.53
0001-0003-00,100.95,168.25
00015172 W,85.32,142.20
我正在创建文件并且标题值正确,但我不确定如何获取要导入的值。

最佳答案

继续我的评论......提供资源和一个简单的例子。

Find-Module -Name '*excel*' | Format-Table -AutoSize
# Results
<#
Version     Name            Repository Description                
-------     ----            ---------- -----------                
7.1.1       ImportExcel     PSGallery  PowerShell module to import/export Excel spreadsheets, without Excel....                  
0.1.12      PSWriteExcel    PSGallery  Little project to create Excel files without Microsoft Excel being installed.             
1.0.2       PSExcel         PSGallery  Work with Excel without installing Excel        
...    
0.6.9       ExcelPSLib      PSGallery  Allow simple creation and manipulation of XLSX file                  
2.1         Read-ExcelFile  PSGallery  PowerShell module to import Excel spreadsheets, without Excel....    
...
#>
MSExcel 将 native 读取格式正确的 CSV。因此,要转换为真正的 XLS 文件,请使用 PowerShell、MSOffice COM 使用 CSV 文件打开 MSExcel,然后将其保存为 XLS 格式。
$FileName = "$env:temp\Report"

Get-Process | 
Export-Csv -UseCulture -Path "$FileName.csv" -NoTypeInformation -Encoding UTF8

$excel         = New-Object -ComObject Excel.Application 
$excel.Visible = $true
$excel.Workbooks.Open("$FileName.csv").SaveAs("$FileName.xlsx",51)
$excel.Quit()

explorer.exe "/Select,$FileName.xlsx"
您的用例当然如前所述:
Import-Csv -Path 'D:\temp\book1.txt' -header Title, Author
然后如上所述使用 COM。

关于excel - 将 TXT 转换为 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66519691/

相关文章:

bash - 更改/修改 CSV 分隔符和定界符的 sed 语句

python - 在 Python Pandas read_csv 中使用多字符定界符

vba - Application.OnTime 未执行

excel - 在VBA中通过变量传递给子

PowerShell:如何在名称为 '*'(星号/星号)的文件/文件夹上创建选择器?

azure - 如何使用alerts/powershell/cli获取Azure事件日志摘要?

c# - 编码导出 CSV 文件的问题

excel - vba中dim和set有什么区别

excel - 获取二维数组中具有值的单元格的首地址

powershell - 如何在powershell中获取下一个工作日