【发布时间】:2020-04-30 14:59:53
【问题描述】:
我正在尝试自动导入县文件并将其转换为 csv。我遇到的问题是帐号正在转换为科学计数法。
Import-Excel BacktaxRaw_FL_Flagler2.xlsx | Export-Csv ExportTest.csv
如果我尝试使用将数字字段格式化为文本字段
C:\testdata> Import-Excel BacktaxRaw_FL_Flagler.xlsx | Export-Excel ExportTest.xlsx -Show -AutoSize -NumberFormat '@'
这里的问题是帐号最后几位被零替换了。例子。原始数字是“1914310000010100016”,导入将其转换为“1.9143100000101E+18”,最后导出转换为“1914310000010100000”。如您所见,末尾的 16 被替换为 00。
具有讽刺意味的是,如果我将数据导入新的 excel 文件并指定通过 excel 导入数据并将类型定义为文本,那么我可以使用 Import-excel 毫无问题地转换为 csv。这告诉我 Import-Excel 正在努力从原始 excel 文件中导入数据。有人可以帮我解决这个问题吗?
我已附上导入文件: BacktaxRaw_FL_Flagler.xlsx
在做了一些研究并感谢 Ron 的建议后,我更深入地查看了上述文件的原始源代码。我解压缩了 BacktaxRaw_FL_Flagler.xlsx 文件的内容并导航到 \xl\worksheets\sheet1.xml 文件。我在记事本中打开并亲眼看到我在 A 列中查找的值都没有以科学计数法存储。它们实际上是完好无损地存储的。这意味着我为检索数据所做的每一次尝试都导致数据损坏。即使使用 Excel 自己的数据导入向导也会改变这些值。
Screen shot所以你不需要下载文件
如果需要,请在此处下载原始 xml 文件: Raw XML file
【问题讨论】:
-
我很困惑。哪个是原始文件(excel 或 CSV),期望的结果是什么?如果 CSV 是原始的,您需要告诉 Excel 它正在导入的数据是 Text。如果 Excel 是原始文件,则链接文件中的数据已经存在您试图避免的错误。
-
Excel 文件是原始文件。我正在尝试任何转换为 csv 的方法。真正的问题是,在原始的 excel 文件中有一个名为“帐号”的列,其值为“1914310000010100016”。现在不管我用什么方法来转换(以编程方式)最终结果是一个 csv 文件要么有“1.9143100000101E+18”或“1914310000010100000”。请注意,最后两位数字被替换为 00。当我转换为 CSV 时,最终结果值“1914310000010100016”应该保持“1914310000010100016”。虽然我想使用 Import-Excel 我会使用任何东西。
-
在您附加的文件中,我没有看到像
1914310000010100016这样的 任何 值。 Account Number 列中的数值已经转换为它们的数值。请参阅第 3、23、25、28、30 行及更高的行。 -
如果你不做任何事情直接在excel中打开你会看到1.91431E+18 (A3)。 Original File Screen Shot 如果您使用 Excels 数据导入向导并将 A 列设置为文本,您将看到正确的值。 Fixed File Screen Shot。但是当我使用 Import-Excel 导入时,我得到一个损坏的值Converted File Screen Shot。
-
是的,但是当你“使用 Excels 数据导入向导”时,你是从哪里导入的???
标签: excel powershell csv import-from-excel