【问题标题】:Powershell Export-Csv issuePowershell 导出-CSV 问题
【发布时间】:2015-04-08 18:28:00
【问题描述】:

我尝试从psobject 导出 csv 格式的文件。 在我的psoobject 中,我有一个来自多个变量的自定义属性:

$1 = 8
$2 = 8
$props = @{

    'test' = "$1/$2"
}

$csv = New-Object -TypeName psobject -Property $props

$csv | select * | Export-Csv  C:\Users\adm-tc5190\Desktop\report\v2\test.csv 

如您所见,我的“测试”属性是来自 2 个变量 $1 和 $2 的对象。 但是,当我在文件中导出 csv 时,我的“测试”属性输出不正确。

这是我在 csv 文件中得到的输出:

8 月,但必须是 8 月 8 日

提前感谢您的帮助

【问题讨论】:

  • 您是否使用 Excel 或类似程序打开 test.csv?尝试用记事本打开

标签: powershell


【解决方案1】:

csv 文件中的值字符串"8/8" - Excel 假定该字符串是部分日期,并以这种方式格式化。

您可以通过查看文件的实际内容来验证:

PS C:\> Get-Content "C:\Users\adm-tc5190\Desktop\report\v2\test.csv"
#TYPE Selected.System.Management.Automation.PSCustomObject
"test"
"8/8"

您可以使用“文本导入向导”(数据选项卡 -> 获取外部数据 -> 从文本)导入数据,而不是直接用 Excel 打开 csv 文件>),并在最后一步指定“文本”作为数据类型

【讨论】:

  • 嗨 Mathias,是的,你是对的,我的 csv 文件有问题,而不是我的 PS 脚本有问题。你知道有什么方法可以用我的 PS 脚本直接以文本格式保存我的 csv 文件吗?
【解决方案2】:

如果你能解释你试图完成什么,也许我们可以提供更好的方法? Excel 的默认行为是尝试确定数据类型,8/8 将被“转换”为日期格式,这是一种 excel 行为,与 Powershell 或它如何处理数据无关。

双击 csv 文件并直接在 Excel 中打开,我成功地重现了该问题。如果您打开一个空白的 excel 文件并导入,如下面的 Mathias R. Jessen 所述,在文本导入向导的第 3 步中指定“列数据格式”=文本,相信您会得到您期望的行为。这可能比您想要的要多,但这就是您获得所需结果的方式。

【讨论】:

    猜你喜欢
    • 2018-06-22
    • 2017-07-03
    • 1970-01-01
    • 2014-03-22
    • 2013-10-25
    • 1970-01-01
    • 2016-10-23
    • 1970-01-01
    相关资源
    最近更新 更多