当前位置: 首页 > 知识库问答 >
问题:

在Powershell中以2列显示CSV文件

程正阳
2023-03-14

我想读一个csv文件在2列,当我将打开我的excel,它将显示我的csv文件的信息显示在2列。

实际上,我只在一列中显示以下代码:

Function Read-File {
    Param([string]$file, [string]$head)
    if (Test-Path $file) {
        Write-Verbose "$file exists, importing list."
        $data = Import-Csv -Path $file
        $s = @()
        if ($data.$head) {
            foreach ($device in $data) {
                try {
                    $s += $device.$head
                    Write-Verbose -Message "$device.$head"
                } catch {
                    Write-Error -Message "Failed to add $device to list."
                }
            }
        } else {
            Write-Error -Message "No such column, $head, in CSV file $file."
        }

        return $s
    }
}

$list = Read-File $file $fileColumn

所以现在我想做这件事,但在两个专栏中,我是PowerShell的初学者,所以我想感谢一些帮助:)谢谢

这是我的CSV文件:

Asset Number, Serial Number
cd5013172cffd6a317bd2a6003414c1,N5WWGGNL
8df47f5b1f1fcda12ed9d390c1c55feaab8,SN65AGGNL
dc0d1aaba9d55ee8992c657,B2NGAA3501119

我只想在excel的两列上同时显示这些信息(资产编号和序列号),不用担心这些信息一点都不敏感,所以可以:)

共有1个答案

马魁
2023-03-14

>

  • 使用选择对象从输入对象中提取多个属性(包装在自定义对象实例中,[pscustomobject])。

    使用函数的隐式输出-无需首先在数组中收集结果,特别是不需要使用=低效地构建它,这样在每次迭代中都会在幕后创建一个新数组。

    • 请注意,从PowerShell中的函数返回(输出)数据永远不需要返回;任何输出既不被捕获、抑制也不被重定向的命令都有助于函数的整体输出。
    Function Read-File {
    
      # Not that $column (formerly: $head) now accepts an *array* of strings,
      # [string[]]
      Param([string] $file, [string[]] $column)
    
      if (Test-Path $file) {
    
        Write-Verbose "$file exists, importing list."
    
        # Import the CSV file, create custom objects with only the column(s)
        # of interest, and output the result.
        # Also store the result in variable $result via -OutVariable, for
        # inspection below.
        Import-Csv -Path $file | Select-Object -Property $column -OutVariable result
    
        # If at least 1 object was output, see if all columns specified exist
        # in the CSV data.
        if ($result.Count) {
          foreach ($col in $column) {
            if ($null -eq $result[0].$col) {
              Write-Error -Message "No such column in CSV file $file`: $column"
            }
          }  
        }
    
      }
    
    }
    
    # Sample call with 2 column names.
    $list = Read-File $file 'Asset Number', 'Serial Number'
    

    $list然后可以通过管道传输到Export-Csv以创建一个新的CSV文件,您可以在Excel中打开该文件:

    # Export the selected properties to a new CSV file.
    $list | Export-Csv -NoTypeInformation new.csv
    
    # Open the new file with the registered application, asssumed to be Excel.
    Invoke-Item new.csv
    

  •  类似资料:
    • 我想使用OpenCSV库将CSV文件导入到JTable中。网上找到的所有例子都与命令行显示有关,这里找到的唯一代码不起作用,因为JTable需要Object[][]和String[]: 来源:将csv导入JTable 有没有办法用这个库把这些文件显示在一个表格里?

    • 我对powershell非常陌生,我不知道如何将我的数组放入csv文件中,在该文件中,每个字符串都会进入一个新行。下面是一些示例代码。 当我检查csv文件时,所有的输出都显示在一行上,而不是在行的特定列中迭代。任何帮助将是非常有用和感激

    • 我在windows power shell中使用代码git init创建了一个git文件夹,但我看不到创建它的文件夹。如果git文件夹是隐藏的,那么我如何访问它们并使它们可见,因为我希望它们显示在Visual Studio代码中?

    • 本文向大家介绍Powershell中显示隐藏文件的方法,包括了Powershell中显示隐藏文件的方法的使用技巧和注意事项,需要的朋友参考一下 支持PS3.0及以后版本。 当你使用 Get-ChildItem 检索文件,默认是不显示隐藏文件的。 要包含隐藏文件,请使用 –Force 参数。 如果只需要显示隐藏文件,可以使用参数-Hidden ,但它只支持PS3.0。

    • 我使用dropzone作为CSV/XLS文件上载器。我使用此选项筛选和限制CSV/XLS文件: 您有什么方法可以同时查看这两个XLS/CSV文件吗?

    • 问题内容: 我想做的是使用matplotlib,basemap,python等在地图上绘制特定风暴的纬度和经度值。我的问题是我正在尝试提取风暴的纬度,经度和名称。 map,但在第41-44行之间一直出现错误,在该行中尝试将列提取到列表中。有人可以帮我解决这个问题。提前致谢。 该文件如下所示: 我希望列表如下所示: 这是我到目前为止的内容: 这是我收到的最后一条错误消息/回溯: 追溯(最近一次通话)