From 624a4e4b8276f732bc050fc120996d54b0ee1b2f Mon Sep 17 00:00:00 2001 From: dfinke Date: Mon, 30 Oct 2017 18:39:04 -0400 Subject: [PATCH] Updated list of ps1 files for copying and importing --- ImportExcel.psm1 | 60 +++++++++++++++++++++++------------------------ InstallModule.ps1 | 14 +++++++---- 2 files changed, 40 insertions(+), 34 deletions(-) diff --git a/ImportExcel.psm1 b/ImportExcel.psm1 index 8ab5ed2..191de6c 100644 --- a/ImportExcel.psm1 +++ b/ImportExcel.psm1 @@ -1,13 +1,14 @@ Add-Type -Path "$($PSScriptRoot)\EPPlus.dll" +. $PSScriptRoot\AddConditionalFormatting.ps1 . $PSScriptRoot\Charting.ps1 +. $PSScriptRoot\ColorCompletion.ps1 . $PSScriptRoot\ConvertFromExcelData.ps1 . $PSScriptRoot\ConvertFromExcelToSQLInsert.ps1 . $PSScriptRoot\ConvertToExcelXlsx.ps1 . $PSScriptRoot\Copy-ExcelWorkSheet.ps1 . $PSScriptRoot\Export-Excel.ps1 . $PSScriptRoot\Export-ExcelSheet.ps1 -. $PSScriptRoot\Formatting.ps1 . $PSScriptRoot\Get-ExcelColumnName.ps1 . $PSScriptRoot\Get-ExcelSheetInfo.ps1 . $PSScriptRoot\Get-ExcelWorkbookInfo.ps1 @@ -21,13 +22,12 @@ . $PSScriptRoot\New-ConditionalText.ps1 . $PSScriptRoot\New-ExcelChart.ps1 . $PSScriptRoot\New-PSItem.ps1 -. $PSScriptRoot\Open-ExcelPackage.ps1 +. $PSScriptRoot\Open-ExcelPackage.ps1 . $PSScriptRoot\Pivot.ps1 . $PSScriptRoot\Set-CellStyle.ps1 +. $PSScriptRoot\SetFormat.ps1 . $PSScriptRoot\TrackingUtils.ps1 . $PSScriptRoot\Update-FirstObjectProperties.ps1 - - if ($PSVersionTable.PSVersion.Major -ge 5) { . $PSScriptRoot\Plot.ps1 @@ -49,25 +49,25 @@ Function Import-Excel { <# .SYNOPSIS Create custom objects from the rows in an Excel worksheet. - - .DESCRIPTION + + .DESCRIPTION The Import-Excel cmdlet creates custom objects from the rows in an Excel worksheet. Each row represents one object. All of this is possible without installing Microsoft Excel and by using the .NET library ‘EPPLus.dll’. By default, the property names of the objects are retrieved from the column headers. Because an object cannot have a blanc property name, only columns with column headers will be imported. - If the default behavior is not desired and you want to import the complete worksheet ‘as is’, the parameter ‘-NoHeader’ can be used. In case you want to provide your own property names, you can use the parameter ‘-HeaderName’. + If the default behavior is not desired and you want to import the complete worksheet ‘as is’, the parameter ‘-NoHeader’ can be used. In case you want to provide your own property names, you can use the parameter ‘-HeaderName’. - .PARAMETER Path + .PARAMETER Path Specifies the path to the Excel file. - + .PARAMETER WorksheetName - Specifies the name of the worksheet in the Excel workbook to import. By default, if no name is provided, the first worksheet will be imported. + Specifies the name of the worksheet in the Excel workbook to import. By default, if no name is provided, the first worksheet will be imported. .PARAMETER DataOnly Import only rows and columns that contain data, empty rows and empty columns are not imported. .PARAMETER HeaderName - Specifies custom property names to use, instead of the values defined in the column headers of the TopRow. + Specifies custom property names to use, instead of the values defined in the column headers of the TopRow. In case you provide less header names than there is data in the worksheet, then only the data with a corresponding header name will be imported and the data without header name will be disregarded. @@ -79,7 +79,7 @@ Function Import-Excel { This switch is best used when you want to import the complete worksheet ‘as is’ and are not concerned with the property names. .PARAMETER StartRow - The row from where we start to import data, all rows above the StartRow are disregarded. By default this is the first row. + The row from where we start to import data, all rows above the StartRow are disregarded. By default this is the first row. When the parameters ‘-NoHeader’ and ‘-HeaderName’ are not provided, this row will contain the column headers that will be used as property names. When one of both parameters are provided, the property names are automatically created and this row will be treated as a regular row containing data. @@ -99,7 +99,7 @@ Function Import-Excel { ---------------------------------------------- PS C:\> Import-Excel -Path 'C:\Movies.xlsx' -WorkSheetname Actors - + First Name: Chuck Address : California @@ -121,21 +121,21 @@ Function Import-Excel { ---------------------------------------------- PS C:\> Import-Excel -Path 'C:\Movies.xlsx' -WorkSheetname Actors -NoHeader - + P1: First Name - P2: + P2: P3: Address - + P1: Chuck P2: Norris P3: California - + P1: Jean-Claude P2: Vandamme P3: Brussels Notice that the column header (row 1) is imported as an object too. - + .EXAMPLE Import data from an Excel worksheet. One object is created for each row. The property names of the objects consist of the names defined in the parameter ‘-HeaderName’. The properties are named starting from the most left column (A) to the right. In case no value is present in one of the columns, that property will have an empty value. @@ -150,7 +150,7 @@ Function Import-Excel { ---------------------------------------------------------- PS C:\> Import-Excel -Path 'C:\Movies.xlsx' -WorkSheetname Movies -HeaderName 'Movie name', 'Year', 'Rating', 'Genre' - + Movie name: The Bodyguard Year : 1992 Rating : 9 @@ -172,7 +172,7 @@ Function Import-Excel { Genre : Notice that empty rows are imported and that data for the property 'Genre' is not present in the worksheet. As such, the 'Genre' property will be blanc for all objects. - + .EXAMPLE Import data from an Excel worksheet. One object is created for each row. The property names of the objects are automatically generated by using the switch ‘-NoHeader’ (P1, P@, P#, ..). The switch ‘-DataOnly’ will speed up the import because empty rows and empty columns are not imported. @@ -187,11 +187,11 @@ Function Import-Excel { ---------------------------------------------------------- PS C:\> Import-Excel -Path 'C:\Movies.xlsx' -WorkSheetname Movies –NoHeader -DataOnly - + P1: The Bodyguard P2: 1992 P3: 9 - + P1: The Matrix P2: 1999 P3: 8 @@ -215,13 +215,13 @@ Function Import-Excel { ---------------------------------------------------------- PS C:\> Import-Excel -Path 'C:\Movies.xlsx' -WorkSheetname Actors -DataOnly -HeaderName 'FirstName', 'SecondName', 'City' –StartRow 2 - + FirstName : Jean-Claude SecondName: Vandamme City : Brussels Notice that only 1 object is imported with only 3 properties. Column B and row 2 are empty and have been disregarded by using the switch '-DataOnly'. The property names have been named with the values provided with the parameter '-HeaderName'. Row number 1 with ‘Chuck Norris’ has not been imported, because we started the import from row 2 with the parameter ‘-StartRow 2’. - + .LINK https://github.com/dfinke/ImportExcel @@ -262,9 +262,9 @@ Function Import-Excel { [String]$Name, $Value ) - + Try { - $NewRow.$Name = $Value + $NewRow.$Name = $Value Write-Verbose "Import cell '$($Worksheet.Cells[$R, $P.Column].Address)' with property name '$Name' and value '$Value'" } Catch { @@ -284,7 +284,7 @@ Function Import-Excel { [Parameter(Mandatory)] [Int]$StartRow ) - + Try { if ($NoHeader) { $i = 0 @@ -349,7 +349,7 @@ Function Import-Excel { $Worksheet = $Excel.Workbook.Worksheets | Select-Object -First 1 } #endregion - + #region Set the top row if (((-not ($NoHeader -or $HeaderName)) -and ($StartRow -eq 0))) { $StartRow = 1 @@ -388,7 +388,7 @@ Function Import-Excel { #region Filter out rows with data in columns that don't have a column header if ($DataOnly -and (-not $NoHeader)) { - $Rows = $CellsWithValues.Start | where {$PropertyNames.Column -contains $_.Column} | + $Rows = $CellsWithValues.Start | where {$PropertyNames.Column -contains $_.Column} | Sort-Object Row -Unique | Select-Object -ExpandProperty Row } #endregion @@ -411,7 +411,7 @@ Function Import-Excel { foreach ($P in $PropertyNames) { Add-Property -Name $P.Value -Value $Worksheet.Cells[$R, $P.Column].Value } - + [PSCustomObject]$NewRow } #endregion diff --git a/InstallModule.ps1 b/InstallModule.ps1 index 53c4c23..e4431ff 100644 --- a/InstallModule.ps1 +++ b/InstallModule.ps1 @@ -1,9 +1,9 @@ -<# - .SYNOPSIS +<# + .SYNOPSIS Install the module in the PowerShell module folder. .DESCRIPTION - Install the module in the PowerShell module folder by copying all the files. + Install the module in the PowerShell module folder by copying all the files. #> [CmdLetBinding()] @@ -22,13 +22,17 @@ Begin { '*.dll', '*.psd1', '*.psm1', + 'AddConditionalFormatting.ps1', 'Charting.ps1', + 'ColorCompletion.ps1', 'ConvertFromExcelData.ps1', 'ConvertFromExcelToSQLInsert.ps1', 'ConvertToExcelXlsx.ps1', 'Copy-ExcelWorkSheet.ps1', + 'Export-Charts.ps1', 'Export-Excel.ps1', 'Export-ExcelSheet.ps1', + 'formatting.ps1', 'Get-ExcelColumnName.ps1', 'Get-ExcelSheetInfo.ps1', 'Get-ExcelWorkbookInfo.ps1', @@ -38,13 +42,15 @@ Begin { 'Import-Html.ps1', 'InferData.ps1', 'Invoke-Sum.ps1', - 'New-ConditionalText.ps1', 'New-ConditionalFormattingIconSet.ps1', + 'New-ConditionalText.ps1', 'New-ExcelChart.ps1', 'New-PSItem.ps1', + 'Open-ExcelPackage.ps1', 'Pivot.ps1', 'Plot.ps1', 'Set-CellStyle.ps1', + 'SetFormat.ps1', 'TrackingUtils.ps1', 'Update-FirstObjectProperties.ps1' )