我正在使用Export-Excel模块创建用于数据库迁移的映射文件。这两个数据源是
当我从SQL Server中提取数据并将其通过管道导入Export-Excel时,一切都很好。当我使用Access中的数据时,它变得不可读,即:
27c87ef9bbda4f709f6b4002fa4af63c
cf522b78d86c486691226b40aa69e95c
相同的数据打印到屏幕上没有问题。
这是我用来提取数据并将其导出到Excel的代码:
Function Get-AccessData {
param ($sql)
Try {
#Connection
$Connection = New-Object -TypeName System.Data.OleDb.OleDbConnection
#Connection string
$Connection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= $($Settings.Files.access)"
#create command and fill dataset
$ConCommand = $Connection.CreateCommand()
$ConCommand.CommandText = $SQL
$OAdapt = New-Object -TypeName System.Data.OleDb.OleDbDataAdapter $ConCommand
$DS = New-Object -TypeName System.Data.DataSet
$OAdapt.Fill($DS) | out-null
return $DS
}
Catch {
Set-Output "[!] Access database connection failed" -colour RED -logfilepath $log_prerequisites
Set-Output " Ensure that Microsoft.ACE.OLEDB.12.0 provider is installed" -colour RED -logfilepath $log_prerequisites
Set-Output "$_" -logfilepath $log_prerequisites
break
}
}
((Get-AccessData -sql "SELECT DISTINCT positionfrom JobOrder").tables | format-table)
$JobTypes | Export-Excel $mFile_JobType -Autosize -FreezeTopRow -BoldTopRow -WorkSheetName "Job Types" -show
答案 0 :(得分:1)
从下一行到最后一行删除format-table
。在PowerShell中,每次使用format-*
函数时,您基本上是在说“我不再把它当作对象了,给我提供特定格式的纯文本”(在这种情况下,是表格格式)。
但是Export-Excel
期望的是数据对象,而不是纯文本。所以把它喂。
(Get-AccessData -sql "SELECT DISTINCT positionfrom JobOrder").tables | Export-Excel $mFile_JobType -Autosize -FreezeTopRow -BoldTopRow -WorkSheetName "Job Types" -show