gpt4 book ai didi

excel - PowerShell - 将数据粘贴到 Excel 中

转载 作者:行者123 更新时间:2023-12-02 12:12:13 25 4
gpt4 key购买 nike

今天我刚刚整理了这个 PowerShell 脚本

  • 采用制表符分隔的文本文件,

  • 将其读入内存,

  • 根据特定列的不同值进行可变数量的过滤查询

  • 创建一个新的空 Excel 工作簿

  • 将过滤数据的每个子集添加到新的 Excel 工作表

最后一步是我陷入困境的地方。目前,我的代码以展开/转置“键:值”条目的形式将几行数据放入工作表中的一个范围中,从而形成水平数据布局。相同范围的数据始终会被覆盖。

我想要垂直布局形式的数据,即列中的数据,就像使用 MS Excel 的导入文件向导导入 CSV 文件一样。

还有比下面更简单的方法吗?

我承认,一些 PowerShell 功能是以 cargo 狂热的编程模式粘贴到这里的。请注意,我没有任何 PowerShell 经验。我做了一些批处理文件,VBScript ,和VBA几年前编码。所以,也欢迎其他批评。

PARAM (
[Parameter(ValueFromPipeline = $true)]
$infile = ".\04-2011\110404-13.txt"
)

PROCESS {
echo " $infile"
Write-Host "Num Args:" $args.Length;

$xl = New-Object -comobject Excel.Application;
$xl.Visible = $true;

$Workbook = $xl.Workbooks.Add();

$content = Import-Csv -delimiter "`t" $infile;
$ports = $content | Select-Object Port# | Sort-Object Port# -Unique -Descending;
$ports | ForEach-Object {
$p = $_;
Write-Host $p.{Port#};

$Worksheet = $Workbook.Worksheets.Add();
$workSheet.Name = [string]::Format("{0} {1}", "PortNo", $p.{Port#});
$filtered = $content | Where-Object {$_.{Port#} -eq $p.{Port#} };
$filtered | ForEach-Object {
Write-Host $_.{ObsDateTime}, $_.{Port#}
}
$filtered | clip.exe;
$range = $Workbook.ActiveSheet.Range("a2", "a$($filtered.count)");
$Workbook.ActiveSheet.Paste($range, $false);
}
$xl.Quit()
}

数据输出示例

错误

Port#       : 1
Obs# : 1
Exp_Flux : 0,99
IV Cdry : 406.96
IV Tcham : 16.19
IV Pressure : 100.7
IV H2O : 9.748
IV V3 : 11.395
IV V4 : 0.759
IV RH : 53.12

Port#    Obs#    Exp_Flux    IV Cdry    IV Tcham    IV Pressure    IV H2O    IV V3    IV V4    IV RH
1 1 0,99 406.96 16.19 100.7 9.748 11.395 0.759 53.12

最佳答案

尝试Export-Xls ,看起来非常漂亮。从未有机会使用它,但(实际上)了解其工作人员,我相信您会非常乐意使用它。如果您同意,请在此处提供反馈,我们将不胜感激。

<小时/>

Export-Xls 中无序属性的可能解决方法

可以更改函数Add-Array2Clipboard,以便它接受新的输入参数:一个提供按要求排序的属性名称的数组。

然后您可以更改使用 get-member 的部分。愚蠢的例子:

"z", "a", "c" | %{ get-member -name $_ -inputobject $thecurrentobject }

这只是一个有关如何从 get-member 实现有序属性的示例。

关于excel - PowerShell - 将数据粘贴到 Excel 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5819976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com