使用本地化在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,6538,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示例)应该被读入和解释正确。