Powershell中的Excel到.csv不断更改日期和长号的格式

时间:2016-11-22 19:52:18

标签: excel powershell csv format scientific-notation

Powershell脚本如下:

$E = New-Object -ComObject Excel.Application
$E.Visible = $false
$E.DisplayAlerts = $false
$wb = $E.Workbooks.Open($args[0])
$wb_name = fix-wbname($wb.Name)
foreach ($ws in $wb.Worksheets)
{
    $n = $wb.Name + "_" + $ws.Name + ".csv"
    $n = Join-Path -Path $args[1] -ChildPath $n
    $ws.SaveAs($n, 6)
}

它有效,但Excel对文本格式化做了愚蠢的事情。 YYYY-MM-DD格式的日期更改为M / D / YYYY。编号18446744073709500000更改为" 1.84467E + 19"

我有什么方法可以做到这一点并让Excel只导出值,因为它们

1 个答案:

答案 0 :(得分:0)

一般来说,没有。 excel中的日期不会以与您在屏幕上看到的格式相同的格式存储在内部。它们以某种二进制数字格式存储,几乎无疑与Windows内部使用的格式相同。我还没有研究过这个。您将不得不找出转换为csv时发生的默认转换。这可能取决于文化。

可以通过excel内部的设置来控制文化依赖性。如果由Powershell完成对csv的转换,您可以通过指定可选参数来控制文化依赖。

对不起,这太模糊了。