【问题标题】:Invoking SQL query within excel in powershell script在powershell脚本中调用excel中的SQL查询
【发布时间】:2014-08-07 04:21:04
【问题描述】:

我正在尝试在 powershell 脚本中的 EXCEL 工作表中调用 SQL 查询,因此查询将打印到 EXCEL 工作表

$username = $credentials.UserName
$password = $credentials.GetNetworkCredential().Password
$conn = New-Object System.Data.SqlClient.SqlConnection
$conn.ConnectionString = "Server=10.10.10.10;Initial Catalog=database;User Id=$username;Password=$password;"

$excel = New-Object -Com Excel.Application
$excel.Visible = $True
$wb = $Excel.Workbooks.Add()
$currentWorksheet=1

if ($currentWorksheet -lt 4){
    $ws = $wb.Worksheets.Item($currentWorksheet)
}
else
{
    $ws = $wb.Worksheets.Add()
}

$currentWorksheet += 1
    $qt = $ws.QueryTables.Add($conn.ConnectionString, $ws.Range("A1"), $SQL)

当我运行脚本时出现错误

Exception calling "Add" with "3" argument(s): "Exception from HRESULT: 0x800A03EC"

我以为我在 $ws.QueryTables.Add(

中输入了正确数量的参数和值

如何解决这个问题?

【问题讨论】:

    标签: sql excel powershell


    【解决方案1】:

    我必须创建 DSN,如此处所示

    http://blog.mclaughlinsoftware.com/2012/09/12/sql-server-odbc-osn/
    

    然后我在脚本开头创建了变量

    $DSN = 'SQL Server ODBC' (same as the example)
    

    现在,$qt 的值改变了,

    $qt = $ws.QueryTables.Add("ODBC;DSN=$DSN", $ws.Range("A1"), $SQL)
    

    【讨论】:

    • 您好,我正在使用类似代码,但在尝试刷新时卡住了。 $qt = $ws.QueryTables.Add("ODBC;DSN=$DSN", $ws.Range("A1"), $SQL) if ($qt.Refresh()) 我用过$excel.Visible = $True,结果是 Excel 要求使用哪个数据源。全部配置好后怎么会发生这种情况?
    猜你喜欢
    • 2016-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-28
    • 1970-01-01
    • 2016-04-25
    • 1970-01-01
    • 2016-10-22
    相关资源
    最近更新 更多