我有一個在Powershell中運行的SQL查詢,它將結果導出到一個帶有多個電子表格的Excel工作簿。我現在大部分問題都已經解決,但是我有一個相當大的問題。PowerShell執行SQL查詢,將輸出格式化爲excel。從輸出丟失一些數據
結果應返回填滿3列的值。該查詢在PowerShell之外工作並返回預期結果,但我失去了第三列的結果。對於經驗豐富的人來說,這可能是顯而易見的,但我很難過。
我一直在尋找一種方法來回顯或從PowerShell輸出我的查詢結果到屏幕上,以幫助我確定丟失數據的位置,但沒有骰子。
這裏是腳本:
$DSN='mydsn'
$DirectoryToSave = 'c:\report\'
[email protected]"
My Working Query
"@
if (!(Test-Path -path "$DirectoryToSave")) #create it if not existing
{
New-Item "$DirectoryToSave" -type directory | out-null
}
$excel = New-Object -ComObject excel.application
$excel.visible = $True
$excel.DisplayAlerts = $False
$xl=$excel.Workbooks.Add()
$xl.Worksheets.Add()
$xl.Worksheets.Add()
$s1=$xl.sheets.Item(1)
$ws1 = $xl.sheets | where {$_.name -eq 'Sheet1'}
$ws1.name = $Project
$qt = $ws1.QueryTables.Add("ODBC;DSN=$DSN", $ws1.Range("A1"), $SQL1)
if ($qt.Refresh()){
$ws1.Activate()
$ws1.Select()
$excel.Rows.Item(1).HorizontalAlignment = $xlCenter
$excel.Rows.Item(1).VerticalAlignment = $xlTop
$excel.Rows.Item("1:1").Font.Name = "Calibri"
$excel.Rows.Item("1:1").Font.Size = 11
$excel.Rows.Item("1:1").Font.Bold = $true
$excel.Columns.item("A:C").EntireColumn.AutoFit()
$excel.Columns.item("B").NumberFormat=("$#,##0.00")
}
在第三式柱的值應該是數字,並且通常返回由逗號分隔的一個4位值。每個單元格可以有多種返回的值。這就是爲什麼我使用「$ excel.Columns.item(」A:C「)。EntireColumn.AutoFit()」自動設置的原因。
任何人有任何想法我錯了?
謝謝提前!
這是一個應該填充第3列的數據的例子。每行都會像這樣填充:** 4084,4207,4296,4312,4324,4325,4356,4363,4364,4368,4369,4377, 4390,4403,4411,4419,4422,4425,4448,4453,4459,4476,4497,4516,4518,4534,4536,4547,4579,4583,4584,4587,4602,4607,4635,4641,4643, 4672,4675,4679,4687,4689,4697,4708,4736,4839,4975,4998,5005,5064,5080,5102,5151,5172,5180,5223,5237,5238 ** – 2015-02-24 16:25:47
您的意思是說,將根據您想要的結果從這個問題?:http://stackoverflow.com/questions/28118034/ms-sql-query-assistance – Kev 2015-02-24 19:56:09
我的意思是,當我運行我的查詢以外的PowerShell時,我得到3列的數據。第一個是公司名稱|美元價值|發票。有時在這種情況下涉及多個發票,他們輸出爲我的示例(沒有包裝所有結果在一行中)。當我運行我應該將結果輸出到excel工作表的ps腳本時,我會得到我期望的所有內容,除了發票號碼。即使標題在那裏,但根本沒有數據。 – 2015-02-24 20:12:28