PowerShell运行办公应用程序在不同的文化问题

时间:2011-11-02 05:07:06

标签: powershell ms-office

这里描述了如何在不同的文化中运行脚本 Using-Culture

但它不适用于com对象。 例: 如果在“A1”单元格中创建带“= 1/3”的excel文件并尝试获取它的值 来自PS的细胞使用不同的培养物,结果将是相同的

function test {
    [Microsoft.Office.Interop.Excel.ApplicationClass]$excel = New-Object -ComObject "Excel.Application"
    $excel.visible = $false
    $excel.Application.DisplayAlerts = $false   

    $wbk = $excel.Workbooks.Open("d:\tmp\test.xls")

    $sheeet=$wbk.Worksheets.Item(1)
    $range = $sheeet.Cells.Item(1,1)
    Write-Host $sheeet.Range("A1").Text

    $excel.Quit()
    $wbk = $Null
    $sheeet = $Null
    $range = $Null
    $excel = $Null
    [GC]::Collect()     
}

Using-Culture -Culture en-US -Script {test} # 0,333333 But expect 0.333333
Using-Culture -Culture ru-RU -Script {test} # 0,333333

长话短说,如何在不同的文化中运行办公应用程序? THX!

条件:Windows Xp SP3,Office 2003,PowerShell 2.0

1 个答案:

答案 0 :(得分:0)

你为什么不试试这种方式

$value = $sheeet.Range("A1").Value()
$value.ToString([System.Globalization.CultureInfo]::GetCultureInfo("ru-ru"))

事实上,COM编组的$ value值是双倍的,所以你可以把它作为一个字符串用你想要的任何语言。