Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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
Powershell Excel ComObject打开自定义分隔符_Excel_Powershell_Csv_Delimiter - Fatal编程技术网

Powershell Excel ComObject打开自定义分隔符

Powershell Excel ComObject打开自定义分隔符,excel,powershell,csv,delimiter,Excel,Powershell,Csv,Delimiter,我在Powershell Excel ComObject上遇到了一个问题,无法接受除逗号,以外的分隔符。接收到的一些外部.csv文件使用不同的分隔符,例如分号、管道|等 那么,有什么解决方案可以让它接受自定义分隔符吗?我尝试使用Import Csv$fileloop-Delimiter';'并且它可以工作。但是,我希望继续使用-ComObject,因为我的脚本都是使用ComObject编写的,我需要它来解析和检查列和行以及一些额外的函数 以下是打开.csv文件以进行进一步处理的相关代码片段: $

我在Powershell Excel ComObject上遇到了一个问题,无法接受除逗号
以外的分隔符。接收到的一些外部.csv文件使用不同的分隔符,例如分号
、管道
|

那么,有什么解决方案可以让它接受自定义分隔符吗?我尝试使用
Import Csv$fileloop-Delimiter';'并且它可以工作。但是,我希望继续使用-ComObject,因为我的脚本都是使用ComObject编写的,我需要它来解析和检查列和行以及一些额外的函数

以下是打开.csv文件以进行进一步处理的相关代码片段:

$path      = "C:\Users\1.csv"
$objexcel  = New-Object -ComObject Excel.Application
$workbook  = $objexcel.Workbook.Open($path)
$worksheet = $workbook.activesheet
$colMax    = ($WorkSheet.UsedRange.Columns).count
$intcolMax = $colMax
$intRowMax = ($WorkSheet.UsedRange.Rows).count
.....

我对一些相关主题进行了研究和测试,但没有一个有效:

  • 测试结果:
    1.脚本需要很高的可移植性,这意味着脚本将传递给其他用户使用,因此需要避免在windows的区域和语言设置中使用设置方法。
    2.脚本需要处理大尺寸和大量的.csv文件,因此需要避免使用诸如
    Import csv$fileloop-Delimiter';'之类的方法导出Csv$commadelimiteroutput-Delimiter','
    以将新的.Csv文件重建为逗号分隔符,然后使用ComObject进行处理

    如果缺少信息或不清楚,请告诉我。

    不要使用该方法,请使用。这允许设置自定义分隔符,但这不是必需的,因为它还允许一些标准分隔符使用
    $true
    /
    $false

    设置分号
    的参数
    分隔符到
    $true
    ,其他分隔符到
    $false

    $objexcel.WorkBooks.OpenText(`
                    $path,        # Filename
                    2,            # Origin
                    1,            # StartRow
                    1,            # DataType
                    1,            # TextQualifier
                    $false,       # ConsecutiveDelimiter
                    $false,       # Tab
                    $true,        # Semicolon
                    $false,       # Comma
                    $false,       # Space
                    $false,       # Other - $true/$false
                    $false,       # OtherChar - specify the character if Other is $true
                    @(@(3,3),@(1,2))         # FieldInfo
    )
    

    对于
    FieldInfo
    ,您可以获取枚举。我使用了与文档示例相同的示例,将第3列指定为,
    xlMDYFormat
    第1列指定为
    xlTextFormat
    ,但在PowerShell中。

    Excel当前正在打开第一列中包含所有数据的文件吗?如果是这样,您可以使用它的方法来定义自定义分隔符。以前尝试过此解决方案,也尝试过用您的代码替换当前正在工作的打开方法。不幸的是,代码将因异常而停止:(System.Management.Automation.RuntimeException)-错误消息:不能对空值表达式调用方法。你知道这个例外吗?我对opentext做了一些研究,opentext可能无法直接在.csv文件扩展名上工作,fyr: