Автоматически разделять листы Excel в соответствии с предложением «group by» - PullRequest
0 голосов
/ 28 марта 2019

Мне нужно импортировать файл .csv в Excel (я уже делаю это, используя комбинацию SQLCMD и Powershell, которую я показываю ниже, хотя это расширенная версия моих реальных столбцов / файлов), но по порядкучтобы уменьшить количество строк (у меня много миллионов записей данных), теперь я хочу разделить свои данные на отдельные листы в пределах одной и той же книги, в соответствии с предложением SQL group by (каждая «Group» будет отдельной таблицей).

Вот мой код SQLCMD:

SQLCMD -s"," -S servername -U username -d databasename -W -o 
"mydatafile.csv” -Q "SET NOCOUNT ON 
SELECT Account, QUOTENAME(cast ([ColDescription] as nvarchar(100)),'""') as 
ColumnDescription" FROM myTable

И мой код PowerShell:

### Set input and output path
$inputCSV = "C:\Users\username\Desktop\LSGTransactions.CSV"
$outputXLSX = "C:\Users\username\Desktop\Book1.XLSX"

### Create a new Excel Workbook with one empty sheet
$excel = New-Object -ComObject excel.application 
$workbook = $excel.Workbooks.Add(1)
$worksheet = $workbook.worksheets.Item(1)

### Build the QueryTables.Add command
### QueryTables does the same as when clicking "Data » From Text" in Excel
$TxtConnector = ("TEXT;" + $inputCSV)
$Connector = 
$worksheet.QueryTables.add($TxtConnector,$worksheet.Range("A1"))
$query = $worksheet.QueryTables.item($Connector.name)

### Set the delimiter (, or ;) according to your regional settings
$query.TextFileOtherDelimiter = $Excel.Application.International(5)

### Set the format to delimited and text for every column
### A trick to create an array of 2s is used with the preceding comma
$query.TextFileParseType  = 1
$query.TextFileColumnDataTypes = ,2 * $worksheet.Cells.Columns.Count
$query.AdjustColumnWidth = 1

### Execute & delete the import query
$query.Refresh()
$query.Delete()

### Save & close the Workbook as XLSX. Change the output extension for Excel 
2003
$Workbook.SaveAs($outputXLSX,51)
$excel.Quit()

Мне кажется, я могу понять, как создать новый лист в книге Excel, но я пытаюсь провести мозговой штурм идей по обнаружению КОГДА создавать новый лист ... Могу ли я реализовать механизм зацикливания в powershell ??

Нет ... возможно, мне нужно найти способ экспортировать мой оператор SQL-оператор-с-группой в несколько файлов .csv, а затем использовать сценарий powershell для импорта всех документов .csv в одну книгу Excel(пробуя это сейчас).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...