查找Excelfunction的Powershell名称

我想自动化数据→导入文本文件→文本导入向导的Excel进程

如何find这些菜单的PowerShell名称?

这是我的代码。 我希望它find一个文件夹(有分隔符).txt文件,并将其导入到单独的Excel文件。

需要2个或更多文件才能工作。 垃圾文件必须在其他文件的文件夹中。

$excel = New-Object -ComObject Excel.Application $excel.Visible = $true $excel.DisplayAlerts = $false $path = "S:\DATA EXCHANGE\Testing" #where the original files are $path2="S:\DATA EXCHANGE\Resurgent\fromSFG\test" #where you want the new files to go Set-Location $path $a= Get-ChildItem $path -recurse -include *.txt #only finds the text files $numOfFiles= $a.count For ($n=$numOfFiles-1; $n -gt -1; $n--) {$b=$a[$n].name ; $z=$path+"/"+$b #finds original file for import $wb = $excel.Workbooks.OpenText( #the import $z, # file to open [Microsoft.Office.Interop.Excel.XlPlatform]::xlWindows, 1, # start from row 1 [Microsoft.Office.Interop.Excel.XlTextParsingType]::xlDelimited, [Microsoft.Office.Interop.Excel.XlTextQualifier]::xlTextQualifierDoubleQuote, $false, # Consecutive Delimiter $true, # tab $false, # semicolon $true, # comma $false, # space $true, # use other '|') $y= $b -replace ".txt.*" #gets filename without extension $y= $path2+"/"+$y #adds path to filename #$y= $y+".xlsx" #adds xlsx to filename if ($b -eq "rubbish.txt") {$Excel.ActiveWorkbook.Close()} $Excel.ActiveWorkbook.SaveAs("$y") #$Excel.ActiveWorkbook.Close() } #$Excel.Workbooks.Close() #$Excel.Quit() 

如果我理解你的问题,你正在寻找一种方法,直接导入到Excel的CSV文件。

我使用$ excel.workbooks对象的Open()方法。

 $excel = new-object -comobject excel.application $file = get-item "d:\scripts\test.csv" $excel.Visible=$true $excel.displayalerts = $False $wb = $excel.workbooks.open($file) 

如果这不起作用,我使用文件将.CSV文件重命名为.TXT,然后用OpenText打开它们

更新使用“|” 作为分隔符

 $wb = $excel.Workbooks.OpenText( "mycsv.txt", # file to open [Microsoft.Office.Interop.Excel.XlPlatform]::xlWindows, 1, # start from row 1 [Microsoft.Office.Interop.Excel.XlTextParsingType]::xlDelimited, [Microsoft.Office.Interop.Excel.XlTextQualifier]::xlTextQualifierDoubleQuote, $false, # Consecutive Delimiter $false, # tab $false, # semicolon $false, # comma $false, # space $true, # use other '|') 

不要直接使用带有.CSV文件的OpenText ,请先将其重命名。 Excel似乎与CSV命名文件不同。

菜单项名称为了方便用户而存在。 您看到的标签可能会或可能不会直接对应您需要调用的COM方法。 从任何types的程序(包括PowerShell脚本),您都需要与应用程序公开的对象模型进行交互。 Microsoft的Excel的logging在http://msdn.microsoft.com/en-us/library/wss56bz7.aspx

也就是说,取决于您正在处理的文件数量以及您需要如何处理这些文件,执行此路线可能非常缓慢和乏味。 在许多情况下,将Excel作为ODBC数据源处理可能会更快,并将数据插入到电子表格中,就好像它们是数据库一样。