使用本地化在Excel中导入CSV美国格式的数字?
我有一个.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中导入时,我得到的是这样的:
所以,我显然每隔一段时间就得到一千个分离器.
在第一列中,但是,如果我select第一个数字,则公式字段显示如下:
…意思是.csv
文件中最初的1488201602.653
的数字现在被解释为整数1488201602653
,这是完全错误的。
对于第二列和第三列,如果我select一个数字,那么公式字段显示:
…意思是.csv
文件中最初的8.304700E-04
的数字,然后在单元格中变成8,30E+02
,在.csv
显示为830,47
,这又是完全错误的。
我如何说服Excel导入.csv
文件中美国或C语言环境中的数据,并将其以适当的数值导入,以便在丹麦语本地化(即1488201602,653
和8,304700e-04
)下正确显示。 ?
我会尝试这样的VBA(未testing):
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
那么,我发现了一个手动的方式来处理这个问题,但它仍然是很高兴知道是否有一个自动的。
首先,获取并安装记事本++,如果你还没有。
然后,请注意:
- 在美国(或“C”语言)本地化,没有千位分隔符(即它是一个空string,“”) – 根据丹麦语本地化,千位分隔符是时期“
.
- 在美国(或“C”语言)本地化下,小数点分隔符是句点“
.
” – 在丹麦语本地化下,小数点分隔符是逗号“,
” - 丹麦本地化要求电子记法指数被写作微小的字母
e
,而不是大写字母E
然后,在Notepad ++中打开.csv
文件,并将其作为副本保存为不同的文件名。 然后,按以下顺序进行下列replace:
- search逗号
,
– >用分号replace;
(全部replace) - search期间
.
– >用逗号replace,
(全部replace) - search大写
E
– >用小e
代替e
(全部replace)
然后保存该文件,并将其导入到Excel中。 在Excel中导入时,请记住指定分号;
作为一个CSV字段分隔符 – 并且数字(至less按照OP示例)应该被读入和解释正确。