Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在excel中读取单元格数据并输出到命令提示符_Excel_Exception_Powershell - Fatal编程技术网

如何在excel中读取单元格数据并输出到命令提示符

如何在excel中读取单元格数据并输出到命令提示符,excel,exception,powershell,Excel,Exception,Powershell,我是一名系统管理员,我正在努力学习如何使用powershell。。。我以前从未做过任何类型的脚本编写或编码,我一直在technet脚本中心和在线论坛学习在线教学 我试图完成的是打开一个excel电子表格,从中获取信息(用户名和密码),然后将其输出到powershell中的命令提示符中。不管怎样,当我尝试这样做时,总会收到一个异常调用“InvokeMember”,以下是我迄今为止的代码: 函数调用([object]$m,[string]$method,$parameters) { $m.PSBa

我是一名系统管理员,我正在努力学习如何使用powershell。。。我以前从未做过任何类型的脚本编写或编码,我一直在technet脚本中心和在线论坛学习在线教学

我试图完成的是打开一个excel电子表格,从中获取信息(用户名和密码),然后将其输出到powershell中的命令提示符中。不管怎样,当我尝试这样做时,总会收到一个异常调用“InvokeMember”,以下是我迄今为止的代码:


函数调用([object]$m,[string]$method,$parameters)
{
$m.PSBase.GetType().InvokeMember(
$method,[Reflection.BindingFlags]::InvokeMethod,$null,$m,$parameters,$ciUS)
}

$ciUS=[System.Globalization.CultureInfo]'en-US'

$objExcel=新对象-comobject Excel.Application$objExcel.Visible=$False$objExcel.DisplayAlerts=$False

$OBJWORKEL=Invoke$objExcel.Workbooks.Open“C:\PS\User Data.xls”Write Host“工作表数:$OBJWORKEL.Sheets.Count

$OBJWORKEM=$OBJWORKEM.WORKETS.Item(1)写入主机“工作表:$OBJWORKEM.Name

$Forename=$objWorksheet.Cells.Item(2,1).Text$namname=$objWorksheet.Cells.Item(2,2).Text

写主机名:$Forename写主机名:$name

$objExcel.Quit()如果(ps excel){kill-name excel}

我在论坛上读过许多不同的帖子和文章,都是关于如何尝试绕过en-US问题的,但我似乎无法绕过它,希望这里有人能帮我

下面是我提到的验证问题:


使用“6”参数调用“InvokeMember”时出现异常:“Method”System.Management.Automation.PSMethod.C:\PS\User Data.x
“找不到。”
在C:\PS\excel.ps1:3 char:33

+$m.PSBase.GetType().InvokeMember我发现OLE DB和Office 2007驱动程序更易于使用。如果您没有Office 2007,可以下载


谢谢你的帮助…我已经解决了这个问题!我使用的是PowerShell V2 CTP2,现在我升级到了CTP3。这解决了语言障碍问题,现在我可以运行脚本,而不用担心调用函数,一切都很好

非常感谢


Max

有什么原因不能将其保存为CSV文件,PoSh会处理这个文件,而对你来说没有那么有趣吗?Max,我已经回答了你最初关于SF的问题,因为已经有一些讨论了。如果你想回答这个问题,那么我建议在SF上标记这个问题,让主持人移动它,并关闭这个重复的问题。

function Invoke([object]$m, [string]$method, $parameters)
{
$m.PSBase.GetType().InvokeMember(
$method, [Reflection.BindingFlags]::InvokeMethod, $null, $m, $parameters,$ciUS )
} 

$ciUS = [System.Globalization.CultureInfo]'en-US'

$objExcel = New-Object -comobject Excel.Application $objExcel.Visible = $False $objExcel.DisplayAlerts = $False

$objWorkbook = Invoke $objExcel.Workbooks.Open "C:\PS\User Data.xls" Write-Host "Numer of worksheets: " $objWorkbook.Sheets.Count

$objWorksheet = $objWorkbook.Worksheets.Item(1) Write-Host "Worksheet: " $objWorksheet.Name

$Forename = $objWorksheet.Cells.Item(2,1).Text $Surname = $objWorksheet.Cells.Item(2,2).Text

Write-Host "Forename: " $Forename Write-Host "Surname: " $Surname

$objExcel.Quit() If (ps excel) { kill -name excel}

Exception calling "InvokeMember" with "6" argument(s): "Method 'System.Management.Automation.PSMethod.C:\PS\User Data.x
ls' not found."
At C:\PS\excel.ps1:3 char:33
+ $m.PSBase.GetType().InvokeMember <<<< (
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

Numer of worksheets: You cannot call a method on a null-valued expression. At C:\PS\excel.ps1:18 char:45 + $objWorksheet = $objWorkbook.Worksheets.Item <<<< (1) + CategoryInfo : InvalidOperation: (Item:String) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull

Worksheet: You cannot call a method on a null-valued expression. At C:\PS\excel.ps1:21 char:37 + $Forename = $objWorksheet.Cells.Item <<<< (2,1).Text + CategoryInfo : InvalidOperation: (Item:String) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull

You cannot call a method on a null-valued expression. At C:\PS\excel.ps1:22 char:36 + $Surname = $objWorksheet.Cells.Item <<<< (2,2).Text + CategoryInfo : InvalidOperation: (Item:String) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull

Forename: Surname:
$filepath = 'C:\Users\u00\documents\backupset.xlsx'
$connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=`"$filepath`";Extended Properties=`"Excel 12.0 Xml;HDR=YES`";"
#Connection String for Excel 2003:
#$connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=`"$filepath`";Extended Properties=`"Excel 8.0;HDR=Yes;IMEX=1`";"
$qry = 'select * from [sheet1$]'

$conn = New-Object System.Data.OleDb.OleDbConnection
$conn.ConnectionString = $connString
$conn.open()
$cmd = new-object System.Data.OleDb.OleDbCommand($qry,$conn) 
$da = new-object System.Data.OleDb.OleDbDataAdapter($cmd) 
$dt = new-object System.Data.dataTable 
[void]$da.fill($dt)
$conn.close()
$dt