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 不断更改日期和长数字的格式的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio下运行PowerShell脚本自动更新项目里AssemblyInfo.cs文件的版本(自增小版本号)并发布到Nuget服务器上
将变量从 Excel 2007 自定义任务窗格传递到托管 PowerShell
如何将 PowerShell 树输出到文本或 Excel 文件
如何使用 PowerShell 或 python 脚本读取、编辑或附加存储在 Azure Blob 存储中的 Excel 文件(列和行)