我正在尝试使用Excel表格在输出中获取一些列表,但是人们告诉“这与使用CSV不一样,因为每行是一个单独的对象”,“使用列表来获得您想要的输出”,它使情况复杂化,因为我现在不知道该怎么做。我正在使用PowerShell。有人可以解释我与XLSX和CSV实用程序的区别与导入示例如果可能吗?我看了一些文档但是没有帮助我理解。
.min.js
预期的输出
Column1 Column2 Column3 Column4 ------- ------- ------- ------- infra-98 infra-852 infra-44 infra-99 infra-62 infra-85 infra-8 infra-23 infra-8 infra-852 infra-10 infra-55 infra-70 Column1 Column2 Column3 Column4 ------- ------- ------- ------- infra-1 infra-85 infra-2 infra-99 infra-98 infra-55 infra-44 infra-23 infra-2 infra-1 infra-10 infra-62 infra-70
答案 0 :(得分:1)
使用Import-CSV
cmdlet导入.CSV时,上一个问题会丢失上下文。然后,CSV的每一行都成为PowerShell对象。如果使用ImportExcel
模块导入XLSX,情况也是如此。该结构不再与CSV文件或XLSX文件相同。它不再是电子表格,而是一组对象。
采用简单的.CSV文件
Col1,Col2
a,b
c,a
如果您使用Import-CSV
PowerShell导入它,那么您将获得两个对象的数组。哪个可以更好地描绘如下:
@(
[pscustomobject]@{
Col1 = 'a'
Col2 = 'b'
}
[pscustomobject]@{
Col1 = 'c'
Col2 = 'a'
}
)
因此它是一个两个独立的对象,具有列标题中的属性。
如果将其中一个对象中的属性设置为空字符串,则导出并将对象转换回行时。你将有一个空的“细胞”。
如何解决这个问题是以单个数组的形式读取列,然后在这些数组上执行比较逻辑,然后从这些更新的数组中创建一个全新的对象集合,然后导出。其他人在你的其他问题中已经回答了。