【发布时间】:2017-11-23 01:48:05
【问题描述】:
我有一个从 xls 转换为 csv 的脚本。它非常简单,只需使用 Excel 对象打开 xls 并将其保存为 csv:
cls Remove-Item *.csv $stringBuilder = New-Object System.Text.StringBuilder $objExcel = New-Object -ComObject Excel.Application $objExcel.Visible = $false $Tab = [char]9 $Pestana = 2
# Lee todos los excel de esta carpet $ListadoExcel = Get-ChildItem -filter "*.xlsx" foreach ($Linea in $ListadoExcel) {
$Archivo = $Linea.FullName
$ArchivoCorto = $Archivo.Replace('.xlsx','')
"Procesando: "+$Archivo
$WorkBook = $objExcel.Workbooks.Open($Archivo,$null,$True) #Solo lectura
#Leemos la tercera pestaña
$WorkSheet = $WorkBook.sheets.item($Pestana)
$WorkSheet.SaveAs($ArchivoCorto+".csv", 23)
#"Filas leidas: "+$Filas
#$range = $WorkSheet.UsedRange
#$WorkSheet.Range('B5').Text
#$stream.WriteLine($WorkSheet.UsedRange.Cells.Item.Text)
$WorkBook.Close($False) #Sin guardar }
$objExcel.Quit()
奇怪的是,当我想用;分隔时,结果csv用,分隔。
如果我这样做(Get-Culture).TextInfo.ListSeparator,我会得到;。
我在控制面板的区域和语言设置中也有相同的分隔符。
如果我使用相同的 Excel 并手动保存,则生成的 csv 用“;”分隔。
【问题讨论】:
-
您是否尝试过使用Export-Csv?它允许不同的分隔符?
-
@rrirower 我做了,但我想我必须先做 Import-csv。 Import-csv .\myfile.csv -Delimiter ',' 它没有给我正确的内容。
标签: excel powershell csv