excel - 复制到剪贴板 Powershell 故障

标签 excel powershell dataset scheduled-tasks

我使用 Powershell 创建并编写脚本,将 dataTable 的结果复制到剪贴板中,以便将其粘贴到 Excel 中:

        $excelArray = New-Object 'object[,]' $dt_table1.Rows.Count, $dt_table1.Columns.Count
        $excelArray = ForEach($Row in $dt1.Tables[0].Rows)
                        {
                            $Record = New-Object PSObject
                            ForEach($Col in $dt1.Tables[0].Columns.ColumnName)
                            {
                                Add-Member -InputObject $Record -NotePropertyName $Col -NotePropertyValue $Row.$Col
                            }
                            $Record
                        }
        $excelArray | ConvertTo-CSV -NoType -Del "`t" | Select -Skip 1 | Clip
        [void]$WorkSheet.columns.Item(1).cells.Item(2).PasteSpecial()
        $WorkSheet.Visible = $false
当我使用“Powershell ISE”执行脚本时,脚本工作正常,当我使用“Windows 任务计划程序”中的 CMD 批处理计划此脚本时,问题就来了。当管理员用户连接到 RDP 并且通过调度程序执行此批处理时,它不会将结果复制到 excel 表中,它会复制我在剪贴板中的最后一件事。
执行批处理并关闭 RDP session 时,批处理失败而没有给我一个错误.....发生了什么?也许还有另一种方法可以将数据表或数据集的结果复制到 xcel 工作表中以避免剪贴板?
谢谢!

最佳答案

处理 Excel 文件的更好方法是使用模块 ImportExcel .它使用 EPPLUS 库,因此您不必使用任何 COM 对象、在服务器上安装 Excel 或使用剪贴板。
将数据导出到 Excel 文件的一种方法是简单地使用 Export-Excel .
首先,您需要从 PowerShell 库安装模块:

Install-Module ImportExcel
然后你可以在你的脚本中使用它:
# myScript.ps1
#Requires -Module ImportExcel

Param (
    $Path = 'C:\path\to\the.xlsx'
)

$exportToExcel = ForEach ($Row in $dt1.Tables[0].Rows) {
    $properties = @{}
    ForEach ($Col in $dt1.Tables[0].Columns.ColumnName) {
        $properties[$Col] = $Row.$Col 
    }
    [PSCustomObject]$properties
}

$params = @{
    Path          = $Path 
    WorksheetName = 'Data' 
    TableName     = 'Data'
    FreezeTopRow  = $true
    # HideSheet     = 'Data' 
}
$exportToExcel | Export-Excel @params
一些帮助您入门的有用命令:
Get-Help Export-Excel # displays what a function, its parameters, ..
Get-Help Export-Excel -Examples # displays how to use the function
Get-Command -Module ImportExcel # list all available functions in a module

关于excel - 复制到剪贴板 Powershell 故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66657076/

相关文章:

c# - 使用 "ClosedXML"NuGet 保存 50k 行的 Excel 文件需要很长时间

javascript - 数据表导出到Excel的数据类型

windows - 加载 PowerShell 历史记录

c# - PowerShell 模块是否更接近 C# 中的类的 "thing"?

python - 在不删除其他组和数据集的情况下将更多数据集附加到现有 Hdf5 文件中

c# - 编辑模式下 DataGridView C# 行中的默认值

excel - 删除所有没有#3作为主键开头的行

Java XSSFSheet 无法获取正确的日期值

powershell - Installshield - 使用 powershell 检查注册表中的 key 失败

java - 如何在java中将数据集复制或转换为Arraylist?