将 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中所有以文本形式存储的数字转换为数字啊???