这里描述了如何在不同的文化中运行脚本 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
答案 0 :(得分:0)
你为什么不试试这种方式
$value = $sheeet.Range("A1").Value()
$value.ToString([System.Globalization.CultureInfo]::GetCultureInfo("ru-ru"))
事实上,COM编组的$ value值是双倍的,所以你可以把它作为一个字符串用你想要的任何语言。