Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel CSV和XLSX之间有什么区别_Excel_Powershell_Csv - Fatal编程技术网

Excel CSV和XLSX之间有什么区别

Excel CSV和XLSX之间有什么区别,excel,powershell,csv,Excel,Powershell,Csv,我试图在Excel表格的输出中获得一些列表,但人们告诉我,这与CSV不同,因为每一行都是一个单独的对象,使用列表可以获得所需的输出,这会使情况变得复杂,因为我现在不知道该做什么。我在用PowerShell。如果可能的话,有人能举例说明XLSX和CSV实用程序与导入的区别吗?我看了一些文档,但没有帮助我理解 $csv = Import-Csv .\test1.csv -Delimiter ';' $ref = @($csv.Column1) foreach ($row in $csv) {

我试图在Excel表格的输出中获得一些列表,但人们告诉我,这与CSV不同,因为每一行都是一个单独的对象,使用列表可以获得所需的输出,这会使情况变得复杂,因为我现在不知道该做什么。我在用PowerShell。如果可能的话,有人能举例说明XLSX和CSV实用程序与导入的区别吗?我看了一些文档,但没有帮助我理解

$csv = Import-Csv .\test1.csv -Delimiter ';'

$ref = @($csv.Column1)
foreach ($row in $csv) {
  foreach ($col in 'Column2', 'Column3', 'Column4') {
    if ($ref -contains $row.$col) { $row.$col = '' }
  }
}

$csv | Select-Object Column1,Column2,Column3,Column4 | where Column1 -ne ''
$csv | Select-Object Column1,Column2,Column3,Column4 | where Column2 -ne ''
预期产量

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
当您使用import-CSV cmdlet导入.CSV时,先前问题的上下文将丢失。然后CSV的每一行都成为PowerShell对象。如果使用该模块导入XLSX,则情况也是如此。该结构不再与CSV文件或XLSX文件相同。它不再是一个电子表格,而是一个对象集合

以简单的.CSV文件为例

Col1,Col2
a,b
c,a
如果要使用import CSV PowerShell导入此对象,则会得到一个包含两个对象的数组。哪一个可以像这样更好地描述:

@(
    [pscustomobject]@{
        Col1 = 'a'
        Col2 = 'b'
    }
    [pscustomobject]@{
        Col1 = 'c'
        Col2 = 'a' 
    }
)
因此,它是两个独立的对象,具有来自列标题的属性

如果将其中一个对象中的属性设置为空字符串,则在导出对象并将其转回行时。你将有一个空的牢房


解决这个问题的方法是将列作为单个数组读入,然后对这些数组执行比较逻辑,然后从这些更新的数组中创建一个全新的对象集合,然后导出。其他人在您的其他问题中回答了哪些问题。

您的问题不太详细,也不包含您正在使用的任何代码。请查看帮助,询问一个很好的问题,这将为您提供一个很好的答案。据我所知,我可以给您以下建议:尝试忘记您所知道的,直到知道为止,然后查看面向对象的含义,在powershell中如何工作,CSV格式是什么,无hirachies。XLSX Excel文件根本不是Powershell格式。它类似于CSV文件,就像小鸟是砖块一样。在我看来,您似乎有一些基本的误解。xlsx是Microsoft Excel使用的二进制数据格式,实际上是包含XML文件的zip文件夹。CSV是一种表格格式的纯文本格式。在我看来,你实际上想做的是收集不同数组中的列,然后是这些。如果我把它像链接一样转移到那里,我应该每小时添加一些代码。