将 Excel 属性转换为数字格式

Posted

技术标签:

【中文标题】将 Excel 属性转换为数字格式【英文标题】:Converting the Excel properties to a Number Format 【发布时间】:2018-08-31 17:25:10 【问题描述】:

我有这个自动化脚本,它将采用 .htm 文件并生成要生成到电子表格中的自定义对象。

不幸的是,我的对象中的一个项目是一个很长的数字,所以当它导出到 .xlsx 时,它看起来像这样:

1.04511E+11

我知道在 Excel 中可以将格式更改为不带小数的数字,但我想知道是否可以在脚本中更改格式;特别是因为这是一个自动化的过程。

这是我的脚本片段:

## Build custom object which allows for modification of the spreadsheet that will be generated
$xls = ForEach ($item in $spreadsheet | Where-Object $PSItem.P4 -match '\w+') 
    [pscustomobject]@
        ## Define the colums for the CSV file
        'MnsTransTy'      = $item.P1.TrimStart()
        'Del. Date'       = $item.P2
        'Time'            = $item.P3
        'Name 1'          = $item.P4
        'Purch.Doc.'      = $item.P5
        ## Remove white space
        'Cases'           = $item.P6.TrimStart()
        ## Remove white space
        'line'            = $item.P7.TrimStart()
        'Name'            = $item.P8
        ## Remove white space
        'Tot Pallet'      = $Item.P9.TrimStart()
    

有问题的项目是 P5。我正在使用 ImportExcel 模块,可在此处找到:https://github.com/dfinke/ImportExcel。

对此的任何帮助将不胜感激!提前致谢!

【问题讨论】:

E 数表达式中可能会丢失几个有效数字。这可能需要在导出之前在 Excel 中完成。或者,可能使用 COM 接口。 @lit 谢谢!我还读到,如果我只是在数字前面加上一个 ' 字符,那么问题也将得到解决。我已经尝试过了,但是我在脚本中遇到了错误。也许我只是打错了,但这也是另一种可能。 所以您说您希望将值作为文本导入 Excel?接下来是什么“自动化过程”正在获取数据,您不想使用数字? (因为1.04511E+11 是一个有效数字。) 我只知道添加一个 ' 会显示完整的数字。不幸的是,我不知道接下来的步骤!在我的部分之后,它会转到一个开发团队,我知道他们可以导入数字并删除单引号。我正在考虑创建一个单独的脚本来修改电子表格。 【参考方案1】:

这可能是因为您从单元格中获取值作为字符串数据类型。 您可以尝试明确指定数据类型(在您的情况下为 Double)。像这样:

[pscustomobject]@
        ## Define the colums for the CSV file
        'MnsTransTy'      = $item.P1.TrimStart()
        'Del. Date'       = $item.P2
        'Time'            = $item.P3
        'Name 1'          = $item.P4
        'Purch.Doc.'      = [Double]$item.P5
        ## Remove white space
        'Cases'           = $item.P6.TrimStart()
        ## Remove white space
        'line'            = $item.P7.TrimStart()
        'Name'            = $item.P8
        ## Remove white space
        'Tot Pallet'      = $Item.P9.TrimStart()
    

【讨论】:

谢谢你!我刚刚试了一下,电子表格没有任何变化。我想知道我是否可以创建一个单独的脚本,在这个脚本之后运行,并能够在那里更改它?我不知道。在这一点上只是抛出想法。 [Double]$item.P5 仍然是 '1.04511E+11'?

以上是关于将 Excel 属性转换为数字格式的主要内容,如果未能解决你的问题,请参考以下文章

在excel中如何将输入的数字自动转换为日期

excel时间格式如何换成小时数字格式计算

怎样把excel中所有以文本形式存储的数字转换为数字啊???

XLSX.js读取excel日期格式时 将数字转换为正常日期格式

如何把excel中的空白转换为数字

在EXCEL中将数字转换为文本时怎样在单元格前边自动加0