mirror of
https://github.com/dfinke/ImportExcel.git
synced 2025-12-14 07:13:15 +00:00
Compare commits
1 Commits
Extend-Get
...
add-spectr
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b67801e983 |
@@ -6,7 +6,7 @@
|
|||||||
RootModule = 'ImportExcel.psm1'
|
RootModule = 'ImportExcel.psm1'
|
||||||
|
|
||||||
# Version number of this module.
|
# Version number of this module.
|
||||||
ModuleVersion = '7.8.5'
|
ModuleVersion = '7.8.4'
|
||||||
|
|
||||||
# ID used to uniquely identify this module
|
# ID used to uniquely identify this module
|
||||||
GUID = '60dd4136-feff-401a-ba27-a84458c57ede'
|
GUID = '60dd4136-feff-401a-ba27-a84458c57ede'
|
||||||
@@ -54,7 +54,6 @@ Check out the How To Videos https://www.youtube.com/watch?v=U3Ne_yX4tYo&list=PL5
|
|||||||
'Export-Excel',
|
'Export-Excel',
|
||||||
'Export-ExcelSheet',
|
'Export-ExcelSheet',
|
||||||
'Get-ExcelColumnName',
|
'Get-ExcelColumnName',
|
||||||
'Get-ExcelFileSchema',
|
|
||||||
'Get-ExcelFileSummary',
|
'Get-ExcelFileSummary',
|
||||||
'Get-ExcelSheetDimensionAddress',
|
'Get-ExcelSheetDimensionAddress',
|
||||||
'Get-ExcelSheetInfo',
|
'Get-ExcelSheetInfo',
|
||||||
|
|||||||
@@ -1,47 +0,0 @@
|
|||||||
function Get-ExcelFileSchema {
|
|
||||||
<#
|
|
||||||
.SYNOPSIS
|
|
||||||
Gets the schema of an Excel file.
|
|
||||||
|
|
||||||
.DESCRIPTION
|
|
||||||
The Get-ExcelFileSchema function gets the schema of an Excel file by returning the property names of the first row of each worksheet in the file.
|
|
||||||
|
|
||||||
.PARAMETER Path
|
|
||||||
Specifies the path to the Excel file.
|
|
||||||
|
|
||||||
.PARAMETER Compress
|
|
||||||
Indicates whether to compress the json output.
|
|
||||||
|
|
||||||
.OUTPUTS
|
|
||||||
Json
|
|
||||||
|
|
||||||
.EXAMPLE
|
|
||||||
Get-ExcelFileSchema -Path .\example.xlsx
|
|
||||||
#>
|
|
||||||
|
|
||||||
[CmdletBinding()]
|
|
||||||
param(
|
|
||||||
[Parameter(ValueFromPipelineByPropertyName, Mandatory)]
|
|
||||||
[Alias('FullName')]
|
|
||||||
$Path,
|
|
||||||
[Switch]$Compress
|
|
||||||
)
|
|
||||||
|
|
||||||
Begin {
|
|
||||||
$result = @()
|
|
||||||
}
|
|
||||||
|
|
||||||
Process {
|
|
||||||
$excelFiles = Get-ExcelFileSummary $Path
|
|
||||||
|
|
||||||
foreach ($excelFile in $excelFiles) {
|
|
||||||
$data = Import-Excel $Path -WorksheetName $excelFile.WorksheetName | Select-Object -First 1
|
|
||||||
$names = $data[0].PSObject.Properties.name
|
|
||||||
$result += $excelFile | Add-Member -MemberType NoteProperty -Name "PropertyNames" -Value $names -PassThru
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
End {
|
|
||||||
$result | ConvertTo-Json -Compress:$Compress
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -37,7 +37,8 @@
|
|||||||
[ValidateNotNullOrEmpty()]
|
[ValidateNotNullOrEmpty()]
|
||||||
[String]$Password,
|
[String]$Password,
|
||||||
[Int[]]$ImportColumns,
|
[Int[]]$ImportColumns,
|
||||||
[Switch]$Raw
|
[Switch]$Raw,
|
||||||
|
[Switch]$UseSpectre
|
||||||
)
|
)
|
||||||
end {
|
end {
|
||||||
$sw = [System.Diagnostics.Stopwatch]::StartNew()
|
$sw = [System.Diagnostics.Stopwatch]::StartNew()
|
||||||
@@ -252,6 +253,9 @@
|
|||||||
$entry.Value
|
$entry.Value
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
elseif ($UseSpectre) {
|
||||||
|
$xlBook | Format-SpectreTable
|
||||||
|
}
|
||||||
elseif ($Worksheet.Count -eq 1) {
|
elseif ($Worksheet.Count -eq 1) {
|
||||||
$xlBook["$targetSheetname"]
|
$xlBook["$targetSheetname"]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,54 +0,0 @@
|
|||||||
if (-not (Get-command Import-Excel -ErrorAction SilentlyContinue)) {
|
|
||||||
Import-Module $PSScriptRoot\..\ImportExcel.psd1
|
|
||||||
}
|
|
||||||
|
|
||||||
Describe "Test getting the schema of an Excel file" -Tag GetExcelFileSchema {
|
|
||||||
|
|
||||||
BeforeAll {
|
|
||||||
$script:excelFile = "TestDrive:\test.xlsx"
|
|
||||||
$data = ConvertFrom-Csv @"
|
|
||||||
Region,State,Units,Price
|
|
||||||
West,Texas,927,923.71
|
|
||||||
North,Tennessee,466,770.67
|
|
||||||
East,Florida,520,458.68
|
|
||||||
East,Maine,828,661.24
|
|
||||||
West,Virginia,465,053.58
|
|
||||||
North,Missouri,436,235.67
|
|
||||||
South,Kansas,214,992.47
|
|
||||||
North,North Dakota,789,640.72
|
|
||||||
South,Delaware,712,508.55
|
|
||||||
"@
|
|
||||||
$data | Export-Excel $excelFile
|
|
||||||
}
|
|
||||||
|
|
||||||
It "Test Get-ExcelFileSchema function exists" {
|
|
||||||
$function = Get-Command Get-ExcelFileSchema -ErrorAction SilentlyContinue
|
|
||||||
$function | Should -Not -Be $null
|
|
||||||
}
|
|
||||||
|
|
||||||
It "Test Get-ExcelFileSchema returns json" {
|
|
||||||
$actual = Get-ExcelFileSchema -Path $excelFile
|
|
||||||
$actual | Should -Not -Be $null
|
|
||||||
$actual | Should -BeOfType [string]
|
|
||||||
}
|
|
||||||
|
|
||||||
It "Test Get-ExcelFileSchema correct json" {
|
|
||||||
$actual = Get-ExcelFileSchema -Path $excelFile
|
|
||||||
$actual = $actual | ConvertFrom-Json
|
|
||||||
|
|
||||||
$actual.ExcelFile | Should -BeExactly "test.xlsx"
|
|
||||||
$actual.WorksheetName | Should -BeExactly "Sheet1"
|
|
||||||
$actual.Visible | Should -Be $true
|
|
||||||
$actual.Rows | Should -Be 10
|
|
||||||
$actual.Columns | Should -Be 4
|
|
||||||
$actual.Address | Should -BeExactly "A1:D10"
|
|
||||||
|
|
||||||
$actual.Path | Should -BeExactly ("TestDrive:" + [System.IO.Path]::DirectorySeparatorChar)
|
|
||||||
|
|
||||||
$actual.PropertyNames.Count | Should -Be 4
|
|
||||||
$actual.PropertyNames[0] | Should -BeExactly "Region"
|
|
||||||
$actual.PropertyNames[1] | Should -BeExactly "State"
|
|
||||||
$actual.PropertyNames[2] | Should -BeExactly "Units"
|
|
||||||
$actual.PropertyNames[3] | Should -BeExactly "Price"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
BIN
__tests__/ImportExcelTests/TestData-Tables.xlsx
Normal file
BIN
__tests__/ImportExcelTests/TestData-Tables.xlsx
Normal file
Binary file not shown.
Binary file not shown.
27
changelog.md
27
changelog.md
@@ -1,30 +1,3 @@
|
|||||||
# 7.8.5
|
|
||||||
|
|
||||||
- Added `Get-ExcelFileSchema` to get the schema of an Excel file.
|
|
||||||
- This was added to support interacting with `ChatGPT`. Passing the schema to the `ChatGPT` via `PowerShellAI` let's you ask questions about the data including generating code based on the schema.
|
|
||||||
|
|
||||||
```powershell
|
|
||||||
Get-ExcelFileSchema .\salesData.xlsx
|
|
||||||
```
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"ExcelFile": "salesData.xlsx",
|
|
||||||
"WorksheetName": "Sheet1",
|
|
||||||
"Visible": true,
|
|
||||||
"Rows": 10,
|
|
||||||
"Columns": 4,
|
|
||||||
"Address": "A1:D10",
|
|
||||||
"Path": ".",
|
|
||||||
"PropertyNames": [
|
|
||||||
"Region",
|
|
||||||
"State",
|
|
||||||
"Units",
|
|
||||||
"Price"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
# 7.8.x
|
# 7.8.x
|
||||||
|
|
||||||
Thanks to [Thomas Hofkens](https://github.com/thkn-hofa)
|
Thanks to [Thomas Hofkens](https://github.com/thkn-hofa)
|
||||||
|
|||||||
Reference in New Issue
Block a user