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

Posted

技术标签:

【中文标题】Powershell 中的 Excel 到 .csv 不断更改日期和长数字的格式【英文标题】:Excel to .csv in Powershell keeps changing format of dates and long numbers 【发布时间】:2016-11-22 19:52:17 【问题描述】:

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】:

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

文化依赖可以通过excel里面的设置来控制。如果 Powershell 正在完成向 csv 的转换,您可以通过指定可选参数来控制区域性依赖关系。

对不起,这太含糊了。

【讨论】:

以上是关于Powershell 中的 Excel 到 .csv 不断更改日期和长数字的格式的主要内容,如果未能解决你的问题,请参考以下文章

如何修复无法索引到 PowerShell 中的空数组

Visual Studio下运行PowerShell脚本自动更新项目里AssemblyInfo.cs文件的版本(自增小版本号)并发布到Nuget服务器上

将变量从 Excel 2007 自定义任务窗格传递到托管 PowerShell

如何将 PowerShell 树输出到文本或 Excel 文件

如何使用 PowerShell 或 python 脚本读取、编辑或附加存储在 Azure Blob 存储中的 Excel 文件(列和行)

Powershell Excel 自动化按日期保存工作簿