2015-02-12 4 views
0

Я пытаюсь импортировать .txt-файл, разделенный запятой. Он импортируется. Но excel, похоже, не понимает, что он разделен запятой. Он отображает все в том же столбце.Импорт csv в excel using powershell

[threading.thread]::CurrentThread.CurrentCulture = 'en-US' 
$wbpath=Join-Path "$psscriptroot" 'file.xlsx' 
$importcsv=Join-Path "$psscriptroot" 'file.txt' 
$xl = New-Object -ComObject Excel.Application 
$xl.Visible = $false 
$xl.Workbooks.OpenText($importcsv) 
$xl.DisplayAlerts = $false 
[threading.thread]::CurrentThread.CurrentCulture = 'en-US' 
$xl.ActiveWorkbook.SaveAs($wbpath,51) 
$xl.Quit() 

Любые предложения? Благодарю.

ответ

2

У вас есть два варианта. Один, если ваше расширение файла .csv вместо .txt, оно будет работать как есть. Второй вариант, убедитесь, что вы передали $True для параметра запятой-разделителя, например:

$xl.Workbooks.OpenText($importcsv, 2, 1, 1, 1, $False, $False, $False, $True) 
+0

Спасибо. Все решения работали. Я хочу просто переименовать файл в .csv. – user3019059

1

Вам нужно предоставить больше параметров для метода OpenText, чтобы заставить его видеть разделитель.

$wbpath=Join-Path "$psscriptroot" 'file.xlsx' 
$importcsv=Join-Path "$psscriptroot" 'file.txt' 
$xl = New-Object -ComObject Excel.Application 
$xl.Visible = $true 
$xlWindows=2 
$xlDelimited=1 
$xlTextQualifierDoubleQuote=1 
$StartRow=1 
$xl.workbooks.OpenText($importcsv,$xlWindows,$StartRow,$xlDelimited,$xlTextQualifierDoubleQuote,$false,$false,$false,$true) 
$xl.ActiveWorkbook.SaveAs($wbpath,51) 
$xl.Quit() 

Смотрите ссылку MSDN для получения полной информации:
https://msdn.microsoft.com/en-us/library/office/ff837097.aspx
Первые $ ложь говорит это не рассматривать последовательные разделители как один, следующий один говорит его не рассматривать Tab в качестве разделителя, следующий $ false делает то же самое для точки с запятой, а $ true указывает на использование запятой в качестве разделителя. После этого есть дополнительные параметры разделителя, которые я не включил, поскольку разделители являются необязательными, и вам нужно включить параметры до последнего соответствующего в соответствии с вашими потребностями (задание запятой на значение $ true).

Смежные вопросы