按列对 excel CSV 进行排序,保存并关闭 - 使用批处理或 powershell

Sorting excel CSV by column, saving and closing - with batch or powershell

我正在使用 bat 文件打开名为 'YYYYMMDD_foo.csv' 的每日生成的 Excel 文件,使用批处理 - 这很好用,但我也在尝试对 Excel 进行分组排序按其中一列归档 - 例如 C 列(部门)。

ID, Name, Dept.
001, Greg, Maths
002, Sue, Operations
003, Bob, Academics
004, Joan, Operations

如何批量完成这种排序,以便打开文件,然后这样排序?

ID, Name, Dept.
003, Bob, Academics
001, Greg, Maths
002, Sue, Operations
004, Joan, Operations

谢谢你

编辑:我试图用 Powershell 和 Batch 找到解决方案 - 我将 post 下面的脚本,希望能重新打开我的问题。

Powershell:

$FilePath = "C:\exceltest191203Records.csv"

$rawDate = Get-Date
$year = $rawDate.toString('yyyy')
$month = $rawDate.toString('mm')
$day = $rawDate.toString('dd')



$objExcel = New-Object -ComObject Excel.Application

$objExcel.Visible = $true
$objExcel.DisplayAlerts = $true

$WorkBook = $objExcel.Workbooks.Open($FilePath)

$WorkBook | Sort-Object Program

$WorkBook.Save()

Start-Sleep -s 30

批次:

@echo off

SET dY=%DATE:~0,4%
SET dM=%DATE:~5,2%
SET dD=%DATE:~8,2%
SET searchString=%dY%%dM%%dD%Records.csv
SET thePath=C:\exceltest\

echo %thePath%%searchString%

start Excel.exe %thePath%%searchString%
PAUSE

不需要使用Excel对List进行排序。这可以直接使用 Powershell 完成。 下面的示例读取文件,按列 "Dept." 排序并将其写入可直接在 Excel 中打开的新 CSV 文件。

#Make sure to use MM for Month, mm is Minutes
$dateString = (Get-Date).ToString('yyyyMMdd')

$filepath= "C:\temp\" + $dateString + "_foo.csv"
$list = Import-Csv -LiteralPath $filepath -Delimiter ","

$outPutFilePath = "C:\temp\"+$dateString+"_sorted.csv"

#sort the List and Export it into CSV-File. Use ; so excel will directly open it correctly
$list | Sort-Object -Property "Dept." | Export-Csv -LiteralPath $outPutFilePath -Delimiter ";" -NoTypeInformation