mirror of
https://github.com/dfinke/ImportExcel.git
synced 2025-12-14 23:33:18 +00:00
Added convert from Excel
This commit is contained in:
50
ConvertFromExcelData.ps1
Normal file
50
ConvertFromExcelData.ps1
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
function ConvertFrom-ExcelData {
|
||||||
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
Reads data from a sheet, and for each row, calls a custom scriptblock with a list of property names and the row of data.
|
||||||
|
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
ConvertFrom-ExcelData .\testSQLGen.xlsx {
|
||||||
|
param($propertyNames, $record)
|
||||||
|
|
||||||
|
$reportRecord = @()
|
||||||
|
foreach ($pn in $propertyNames) {
|
||||||
|
$reportRecord += "{0}: {1}" -f $pn, $record.$pn
|
||||||
|
}
|
||||||
|
$reportRecord +=""
|
||||||
|
$reportRecord -join "`r`n"
|
||||||
|
}
|
||||||
|
|
||||||
|
First: John
|
||||||
|
Last: Doe
|
||||||
|
The Zip: 12345
|
||||||
|
....
|
||||||
|
#>
|
||||||
|
param(
|
||||||
|
[Alias("FullName")]
|
||||||
|
[Parameter(ValueFromPipelineByPropertyName = $true, ValueFromPipeline = $true, Mandatory = $true)]
|
||||||
|
[ValidateScript( { Test-Path $_ -PathType Leaf })]
|
||||||
|
$Path,
|
||||||
|
[ScriptBlock]$scriptBlock,
|
||||||
|
[Alias("Sheet")]
|
||||||
|
$WorkSheetname = 1,
|
||||||
|
[int]$HeaderRow = 1,
|
||||||
|
[string[]]$Header,
|
||||||
|
[switch]$NoHeader,
|
||||||
|
[switch]$DataOnly
|
||||||
|
)
|
||||||
|
|
||||||
|
$null = $PSBoundParameters.Remove('scriptBlock')
|
||||||
|
$params = @{} + $PSBoundParameters
|
||||||
|
|
||||||
|
$data = Import-Excel @params
|
||||||
|
|
||||||
|
$PropertyNames = $data[0].psobject.Properties |
|
||||||
|
Where-Object {$_.membertype -match 'property'} |
|
||||||
|
Select-Object -ExpandProperty name
|
||||||
|
|
||||||
|
foreach ($record in $data) {
|
||||||
|
& $scriptBlock $PropertyNames $record
|
||||||
|
}
|
||||||
|
}
|
||||||
46
ConvertFromExcelToSQLInsert.ps1
Normal file
46
ConvertFromExcelToSQLInsert.ps1
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
function ConvertFrom-ExcelToSQLInsert {
|
||||||
|
param(
|
||||||
|
[Parameter(Mandatory = $true)]
|
||||||
|
$TableName,
|
||||||
|
[Alias("FullName")]
|
||||||
|
[Parameter(ValueFromPipelineByPropertyName = $true, ValueFromPipeline = $true, Mandatory = $true)]
|
||||||
|
[ValidateScript( { Test-Path $_ -PathType Leaf })]
|
||||||
|
$Path,
|
||||||
|
[Alias("Sheet")]
|
||||||
|
$WorkSheetname = 1,
|
||||||
|
[int]$HeaderRow = 1,
|
||||||
|
[string[]]$Header,
|
||||||
|
[switch]$NoHeader,
|
||||||
|
[switch]$DataOnly
|
||||||
|
)
|
||||||
|
|
||||||
|
$null = $PSBoundParameters.Remove('TableName')
|
||||||
|
$params = @{} + $PSBoundParameters
|
||||||
|
|
||||||
|
ConvertFrom-ExcelData @params {
|
||||||
|
param($propertyNames, $record)
|
||||||
|
|
||||||
|
$ColumnNames = "'" + ($PropertyNames -join "', '") + "'"
|
||||||
|
$values = foreach ($propertyName in $PropertyNames) { $record.$propertyName }
|
||||||
|
$targetValues = "'" + ($values -join "', '") + "'"
|
||||||
|
|
||||||
|
"INSERT INTO {0} ({1}) Values({2});" -f $TableName, $ColumnNames, $targetValues
|
||||||
|
}
|
||||||
|
# $data = Import-Excel @params
|
||||||
|
|
||||||
|
# $PropertyNames = $data[0].psobject.Properties |
|
||||||
|
# Where-Object {$_.membertype -match 'property'} |
|
||||||
|
# Select-Object -ExpandProperty name
|
||||||
|
|
||||||
|
# $ColumnNames = "'" + ($PropertyNames -join "', '") + "'"
|
||||||
|
|
||||||
|
# foreach ($record in $data) {
|
||||||
|
# $values = $(foreach ($propertyName in $PropertyNames) {
|
||||||
|
# $record.$propertyName
|
||||||
|
# })
|
||||||
|
|
||||||
|
# $targetValues = "'" + ($values -join "', '") + "'"
|
||||||
|
|
||||||
|
# "INSERT INTO {0} ({1}) Values({2});" -f $TableName, $ColumnNames, $targetValues
|
||||||
|
# }
|
||||||
|
}
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
function Export-ExcelAsSQLInsert {
|
|
||||||
param(
|
|
||||||
[Parameter(Mandatory = $true)]
|
|
||||||
$TableName,
|
|
||||||
[Alias("FullName")]
|
|
||||||
[Parameter(ValueFromPipelineByPropertyName = $true, ValueFromPipeline = $true, Mandatory = $true)]
|
|
||||||
[ValidateScript( { Test-Path $_ -PathType Leaf })]
|
|
||||||
$Path,
|
|
||||||
[Alias("Sheet")]
|
|
||||||
$WorkSheetname = 1,
|
|
||||||
[int]$HeaderRow = 1,
|
|
||||||
[string[]]$Header,
|
|
||||||
[switch]$NoHeader,
|
|
||||||
[switch]$DataOnly
|
|
||||||
)
|
|
||||||
|
|
||||||
$null = $PSBoundParameters.Remove('TableName')
|
|
||||||
$params = @{} + $PSBoundParameters
|
|
||||||
|
|
||||||
$data = Import-Excel @params
|
|
||||||
|
|
||||||
|
|
||||||
$PropertyNames = $data[0].psobject.Properties |
|
|
||||||
Where-Object {$_.membertype -match 'property'} |
|
|
||||||
Select-Object -ExpandProperty name
|
|
||||||
|
|
||||||
$ColumnNames = "'" + ($PropertyNames -join "', '") + "'"
|
|
||||||
|
|
||||||
foreach ($record in $data) {
|
|
||||||
$values = $(foreach ($propertyName in $PropertyNames) {
|
|
||||||
$record.$propertyName
|
|
||||||
})
|
|
||||||
|
|
||||||
$targetValues = "'" + ($values -join "', '") + "'"
|
|
||||||
|
|
||||||
"INSERT INTO {0} ({1}) Values({2});" -f $TableName, $ColumnNames, $targetValues
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -20,7 +20,8 @@ Add-Type -Path "$($PSScriptRoot)\EPPlus.dll"
|
|||||||
. $PSScriptRoot\TrackingUtils.ps1
|
. $PSScriptRoot\TrackingUtils.ps1
|
||||||
. $PSScriptRoot\Copy-ExcelWorkSheet.ps1
|
. $PSScriptRoot\Copy-ExcelWorkSheet.ps1
|
||||||
. $PSScriptRoot\Set-CellStyle.ps1
|
. $PSScriptRoot\Set-CellStyle.ps1
|
||||||
. $PSScriptRoot\Export-ExcelAsSQLInsert.ps1
|
. $PSScriptRoot\ConvertFromExcelData.ps1
|
||||||
|
. $PSScriptRoot\ConvertFromExcelToSQLInsert.ps1
|
||||||
|
|
||||||
if($PSVersionTable.PSVersion.Major -ge 5) {
|
if($PSVersionTable.PSVersion.Major -ge 5) {
|
||||||
. $PSScriptRoot\plot.ps1
|
. $PSScriptRoot\plot.ps1
|
||||||
|
|||||||
Reference in New Issue
Block a user