Powershell - Excel SaveAs csv具有指定的分隔符

时间:2017-07-31 12:47:33

标签: excel powershell csv delimiter

下午所有,

是否可以使用具有不同分隔符的Powershell保存CSV文件,在我的情况下为“§”。我使用以下脚本打开和更改XLSX文件中的项目,然后希望保存为“§”分隔的CSV。 find和replace方法在我的情况下不起作用((Get-Content -Path $ CSVfile).Replace(',','§')| Set-Content -Path $ CSVfile2)

$Path = "C:\ScriptRepository\CQC\DataToLoad\"
$FileName = (Get-ChildItem $path).FullName
$FileName2 = (Get-ChildItem $path).Name
$CSVFile = "$Path\$Filename2.csv"

$Excel = New-Object -ComObject Excel.Application -Property @{Visible = 
$false} 
$Excel.displayalerts=$False 
$Workbook = $Excel.Workbooks.Open($FileName) 
$WorkSheet = $WorkBook.Sheets.Item(2) 
$Worksheet.Activate()
$worksheet.columns.item('G').NumberFormat ="m/d/yyyy" 
$Worksheet.Cells.Item(1,3).Value = "Site ID"
$Worksheet.Cells.Item(1,4).Value = "Site Name"

$Worksheet.SaveAs($CSVFile,
[Microsoft.Office.Interop.Excel.XlFileFormat]::xlCSVWindows)

$workbook.Save()
$workbook.Close()
$Excel.Quit()

2 个答案:

答案 0 :(得分:1)

运行以下命令,可以使用分隔符§

保存CSV文件
Import-CSV filename.csv | ConvertTo-CSV -NoTypeInformation -Delimiter "§" | Out-File output_filename.csv

您应该查看ImportExcel - PowerShell模块以导入/导出Excel电子表格,而无需Excel。它使用PowerShell可以更轻松地使用excel文件。

答案 1 :(得分:0)

我知道这是一篇较旧的文章,但这是我最近遇到的一个选项: 只需使用源位置和文件更新e:\projects\dss\pse&g.xlsx以及使用位置和文件名更新file.csv。最后,如果您的工作表的名称不同[Sheet1$]

$oleDbConn = New-Object System.Data.OleDb.OleDbConnection
$oleDbCmd = New-Object System.Data.OleDb.OleDbCommand
$oleDbAdapter = New-Object System.Data.OleDb.OleDbDataAdapter
$dataTable = New-Object System.Data.DataTable
$oleDbConn.ConnectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data 
Source=e:\projects\dss\pse&g.xlsx;Extended Properties=Excel 12.0;Persist Security Info=False"
$oleDbConn.Open()
$oleDbCmd.Connection = $OleDbConn
$oleDbCmd.commandtext = “Select * from [Sheet1$]”
$oleDbAdapter.SelectCommand = $OleDbCmd
$ret=$oleDbAdapter.Fill($dataTable)
Write-Host  "Rows returned:$ret" -ForegroundColor green
$dataTable | Export-Csv file.csv -Delimiter ';'
$oleDbConn.Close()

Source

我正在使用SaveAs(file.csv,6),但无法更改分隔符。 Ishan的解决方案也可以,但是我想要更多的OOB,因为这将在跨不同系统的SSIS包中用于我自己,并且这是可行的。 =)