首页 > 解决方案 > 根据列值使用 Powershell 拆分 Excelfile .xlxs

问题描述

我需要通过powershell脚本根据第一列的值拆分并保存一个excel文件。这是 excel 文件的构建方式(应用程序 30.000 行)

´´´Column1 # Column2 # Column3´´´
´´´AA # data # data # data´´´
´´´AA # data # data # data´´´
´´´AB # data # data # data´´´
´´´AC #data #data #data´´´
´´´AC #data #data #data´´´

结果应该是多个文件,文件名为 AA.xlxs、AB.xlxs、AC.xlxs,当然还有相应的行数据。

到目前为止,我有以下代码:

$objexcel = New-Object -ComObject Excel.Application
$wb = $objexcel.WorkBooks.Open("C:\Test.xlsx")
$objexcel.Visible = $true
$objexcel.DisplayAlerts = $False
$ws = $wb.Worksheets.Item(1)
$doc = $ws.Range("A:A")

foreach ($doc in $docs) {
$newfile,$objexcel = $objexcel.where({$doc -eq $doc})
$newfile | Export-Excel "C:\$doc.xlxs"
}

它只是打开文件,但没有任何反应。如果一些编码人员可以查看代码或提供一个有效的代码,那就太好了。提前致谢。

标签: excelpowershell

解决方案


没有发生任何事情的原因是因为您正在迭代$docs其中不包含任何元素。它当前为空。

当您引用查找数据时,您使用的是 $objexcel,但那是您的 excel 应用程序..不是您要迭代的工作表。使用 $as 访问工作表。

您需要迭代Cells您的 $ws 并在 cells.Item(x, 0) 时获取数据并基于该数据创建一个新文件,其中包含其他两列中的值。

链接到 SO -> 创建和更新 excel 文件的示例


推荐阅读