私はPowershellを初めて使用しています。私は郊外に基づいて複数のワークシートで1つのExcelを作成する必要があるSQLからのクエリを持っている、また、最後のシートはすべての郊外と呼ばれる必要があり、すべてのデータがあります。 これまでは複数のクエリを作成していましたが、ファイルが保存されると、別のスクリプトを使用して複数のワークブックを1つに変換して電子メールで送信します。郊外は毎週変化しているので、その時間が非常に長くなります。 あなたがPowershellのSQLクエリからExcelへ
> # ADELAIDE
>
> $query = "
> SELECT
> Market
> ,Customer ID
> ,Suburb
> ,Product
> From A few tables
> Group By
> Market
> ,Customer ID
> ,Suburb
> ,Product
> "
> $csvFilePath = "c:\Scripts\CBA\CSV\Adelaide.txt"
> $excelFilePath = "c:\scripts\CBA\Excel\Adelaide.xls"
> $instanceName = "TestServer"
> $QueryDB = 'Test_Database'
> $Username = 'buggsbunny'
> $Password = 'looneytunes'
> $results = Invoke-Sqlcmd -Query $query -ServerInstance $instanceName -Database $QueryDB -Username $Username -Password $Password
> $results | Export-Csv -delimiter "`t" $csvFilePath -NoTypeInformation| % {$_.Replace('"','')}
> $excel = New-Object -ComObject excel.application
> $excel.visible = $False
> $excel.displayalerts=$False
> $workbook = $excel.Workbooks.Open($csvFilePath)
> $workSheet = $workbook.worksheets.Item(1)
> $resize = $workSheet.UsedRange
> $resize.EntireColumn.AutoFit() | Out-Null
> $xlExcel8 = 51
> $workbook.SaveAs($excelFilePath,$xlExcel8)
> $workbook.Close()
> $excel.quit()
> $excel = $null
このレポートは、毎日異なる顧客に電子メールで送信する必要があります。私は、ユーザーがシートを作成して電子メールで時間を無駄にしたくない。顧客はシートを郊外で区切り、最後はすべてのものを使いたい。残念ながら、ピボットテーブルはありません。ありがとうございました – user3618691