我正在编写一个脚本,使用PowerShell v7.0从.xlsx
文件中选择特定数据。
Excel工作表包含以下数据:
+------------------------------+------------------+---------+
| Company | Contact | Country |
+------------------------------+------------------+---------+
| Alfreds Futterkiste | Maria Anders | x |
| Centro comercial Moctezuma | Francisco Chang | x |
| Ernst Handel | Roland Mendel | x |
| Island Trading | Helen Bennett | UK |
| Laughing Bacchus Winecellars | Yoshi Tannamuri | Canada |
| Magazzini Alimentari Riuniti | Giovanni Rovelli | x |
+------------------------------+------------------+---------+
要获得可以复制并粘贴到Excel工作表中的表格表示,请单击Show code snippet
,然后单击Run code snippet
。
<table>
<thead>
<tr>
<th>Company</th>
<th>Contact</th>
<th>Country</th>
</tr>
</thead>
<tbody>
<tr>
<td>Alfreds Futterkiste</td>
<td>Maria Anders</td>
<td>x</td>
</tr>
<tr>
<td>Centro comercial Moctezuma</td>
<td>Francisco Chang</td>
<td>x</td>
</tr>
<tr>
<td>Ernst Handel</td>
<td>Roland Mendel</td>
<td>x</td>
</tr>
<tr>
<td>Island Trading</td>
<td>Helen Bennett</td>
<td>UK</td>
</tr>
<tr>
<td>Laughing Bacchus Winecellars</td>
<td>Yoshi Tannamuri</td>
<td>Canada</td>
</tr>
<tr>
<td>Magazzini Alimentari Riuniti</td>
<td>Giovanni Rovelli</td>
<td>x</td>
</tr>
</tbody>
</table>
我所做的:
$Output = [object][order]@{
Name = $WorkSheet.Range("C1:C1000").Formula = "=x"
}
$Output
预期结果:国家= 'x'的公司列表
[*] Alfreds Futterkiste
蒙特苏马商业中心
恩斯特·亨德尔
Magazzini Alementari Riuniti**
谢谢你,谢谢
1条答案
按热度按时间hpcdzsge1#
您应该考虑使用专门的PowerShell模块来与Excel工作簿进行交互-例如
ImportExcel
。如果这不是一个选项,你必须使用**Excel's COM Automation Application interface**,就像你的问题一样:
下面的代码(很容易调整)假设您的表位于
.xlsx
文件的第一个工作表中(并且该工作表不包含任何其他内容)。注:
.Worksheets(1)
是.Worksheets.Item(1)
的缩写,.Cells(1, 3)
是.Cells.Item(1, 3)
的缩写。在PowerShell (Core)的早期版本中,只支持后一种显式形式,[1]但自(至少)v7.2以来,速记形式也可以工作(它总是在 Window PowerShell 中)。[1]有关背景信息,请参见GitHub issue #4554。