我有一个包含以下值的.csv文件:
1488201602.653, 8.304700E-04, 3.079498E-03
1488201603.107, 8.677357E-04, 2.856719E-03
1488201821.012, 7.071995E-04, 4.147542E-03
从代码段中可以看出,数字的格式不同:第一列有一个完整的数字,句号.
是小数点分隔符。除了使用大写E
之外,第二列和第三列都有科学记数法的数字,并且小数分隔符再次使用句号;任何值都没有千位分隔符。
当我尝试在丹麦本地化版本的Excel 2016中导入它时,我得到的是这样的:
所以,我显然在第一列中获得了数千个分隔符.
,但是,如果我选择第一个数字,则公式字段会显示:
...意思是1488201602.653
文件中原来.csv
的数字现在被解释为整数1488201602653
,这是完全错误的。
对于第二和第三列,如果我选择一个数字,则公式字段显示:
...意思是8.304700E-04
文件中最初为.csv
的数字,然后在单元格中变为8,30E+02
,在{{1}中显示为830,47
,再次 - 完全错误。
如何说服Excel导入.csv
文件中的数据,该文件在美国或C语言环境中以正确的数值输入,以便在丹麦语本地化下正确显示({{1} }和.csv
)?
答案 0 :(得分:2)
好吧,我找到了一种手动方式来处理这个问题,但是知道是否有自动问题仍然很好。
首先,如果您还没有,请获取并安装Notepad++。
然后,请注意:
.
”.
” - 在丹麦语本地化下,小数点分隔符为逗号“,
”e
,而不是大写字母E
然后,在Notepad ++中打开您的.csv
文件,并可能将其另存为不同文件名下的副本。然后,按以下顺序执行以下替换:
,
- >替换为分号;
(全部替换).
- >替换为逗号,
(全部替换)E
- >替换为微不足道e
(全部替换)然后保存文件,并将其导入Excel。在Excel中导入时,请记住将分号;
指定为CSV字段分隔符 - 并且应该读入并正确解释数字(至少根据OP示例)。
答案 1 :(得分:1)
我会尝试使用VBA(未经测试):
Sub ImportCSVFile()
Dim xFileName As Variant
xFileName = Application.GetOpenFilename("CSV File (*.csv), *.csv", , "Choose CSV", , False)
If xFileName = False Then Exit Sub
Dim wS As Worksheet
Set wS = ThisWorkbook.Sheets.Add
Dim rG As Range
Set rG = wS.Range("A1")
Dim QT As QueryTable
With wS
Set QT = .QueryTables.Add("TEXT;" & xFileName, rG)
With QT
'''Preserve initial format
.PreserveFormatting = True
'''Select the delimiter
.TextFileParseType = xlDelimited
.TextFileCommaDelimiter = True
'''Choose refresh options
.RefreshStyle = xlInsertDeleteCells
.RefreshOnFileOpen = False
.RefreshPeriod = 0
.SaveData = True
'''Import the data
.Refresh BackgroundQuery:=False
End With 'QT
'''Force the formatting
Call .Columns("1:3").Replace(".", ",")
End With 'wS
End Sub