从Access提取数据时,Export-Excel返回不可读的结果

时间:2018-10-12 01:54:14

标签: excel powershell

我正在使用Export-Excel模块创建用于数据库迁移的映射文件。这两个数据源是

  1. 访问权限(源)
  2. SQL Server(目标)

当我从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

1 个答案:

答案 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