2016-04-27 18 views
0

私は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 

答えて

0

なぜ異なる郊外シートおよび「すべての郊外」シートにデータを複製ありがとう?すべての郊外について1枚のシートを作成し、式またはピボットテーブルを使用して個々の郊外のデータをフィルタリングします。あなたはそれを行うためにPowershellを必要としないでしょう。 ExcelはSQLデータにアクセスでき、更新するにはボタンを1つクリックするだけで済みます。

郊外を個別のシートに分割することをお勧めする場合は、シートごとにパワークエリを作成することを検討してください。新しいデータがある場合は[すべて更新]をクリックすると完了です。

+0

このレポートは、毎日異なる顧客に電子メールで送信する必要があります。私は、ユーザーがシートを作成して電子メールで時間を無駄にしたくない。顧客はシートを郊外で区切り、最後はすべてのものを使いたい。残念ながら、ピボットテーブルはありません。ありがとうございました – user3618691

関連する問題