PowerShell 和 CSV:阻止 CSV 将文本数据转换为科学记数法
PowerShell and CSV: Stop CSV from turning text data into Scientific Notation
我有一个 CSV 列,其中一列包含字母数字组合。
我稍后将通过导入数据在 PowerShell 脚本中使用此 csv 文件。
示例:1A01、1C66、1E53。
现在,在输入这些值之前,我确保将列格式化为文本。
现在一开始它起作用了。我输入数据,保存。我在 PowerShell 中测试导入它并
所有数据均显示有效,包括 1E53。但是假设我稍后再次编辑文件以添加数据,然后保存并关闭。我重新导入到 PowerShell 中,1E53 以 1.00E+53 的形式出现。我怎样才能永久防止这种情况发生?请注意,该列充满了代码,并且有很多#E##。
您的问题不在于 PowerShell,而在于 Excel。为了演示,取 1E53
并将其输入 Excel,然后将 excel 文件保存为 CSV 文件。您会看到值现在更改为 1.00E+53
.
如何解决这个问题?
有几种禁用科学记数法的方法:
https://superuser.com/questions/452832/turn-off-scientific-notation-in-excel
https://www.logicbroker.com/excel-scientific-notation-disable-prevent/
我希望其中一些对你有用。
我认为您可以将文件重命名为 .txt 而不是 .csv,excel 可能会以不同的方式对待它。
祝你好运
如评论:
您可能会从文件加载 csv:
$csv = Import-Csv -Path 'X:\original.csv' -UseCulture
下面的代码在 Here-String 中使用了一个虚拟 csv:
$csv = @'
"Column1","Column2","ValueThatMatters"
"Something","SomethingElse","1E53"
"AnotherItem","Whatever","4E12"
'@ | ConvertFrom-Csv
# in order to make Excel see the values as Text and not convert them into scientific numbers
$csv | ForEach-Object {
# add a TAB character in front of the values in the column
$_.ValueThatMatters = "`t{0}" -f $_.ValueThatMatters
}
$csv | Export-Csv -Path 'X:\ExcelFriendly.csv' -UseCulture -NoTypeInformation
我有一个 CSV 列,其中一列包含字母数字组合。 我稍后将通过导入数据在 PowerShell 脚本中使用此 csv 文件。
示例:1A01、1C66、1E53。 现在,在输入这些值之前,我确保将列格式化为文本。 现在一开始它起作用了。我输入数据,保存。我在 PowerShell 中测试导入它并 所有数据均显示有效,包括 1E53。但是假设我稍后再次编辑文件以添加数据,然后保存并关闭。我重新导入到 PowerShell 中,1E53 以 1.00E+53 的形式出现。我怎样才能永久防止这种情况发生?请注意,该列充满了代码,并且有很多#E##。
您的问题不在于 PowerShell,而在于 Excel。为了演示,取 1E53
并将其输入 Excel,然后将 excel 文件保存为 CSV 文件。您会看到值现在更改为 1.00E+53
.
如何解决这个问题?
有几种禁用科学记数法的方法:
https://superuser.com/questions/452832/turn-off-scientific-notation-in-excel https://www.logicbroker.com/excel-scientific-notation-disable-prevent/
我希望其中一些对你有用。
我认为您可以将文件重命名为 .txt 而不是 .csv,excel 可能会以不同的方式对待它。
祝你好运
如评论:
您可能会从文件加载 csv:
$csv = Import-Csv -Path 'X:\original.csv' -UseCulture
下面的代码在 Here-String 中使用了一个虚拟 csv:
$csv = @'
"Column1","Column2","ValueThatMatters"
"Something","SomethingElse","1E53"
"AnotherItem","Whatever","4E12"
'@ | ConvertFrom-Csv
# in order to make Excel see the values as Text and not convert them into scientific numbers
$csv | ForEach-Object {
# add a TAB character in front of the values in the column
$_.ValueThatMatters = "`t{0}" -f $_.ValueThatMatters
}
$csv | Export-Csv -Path 'X:\ExcelFriendly.csv' -UseCulture -NoTypeInformation