如何编辑超过200万行的CSV文件

时间:2013-04-10 05:27:37

标签: excel

真的需要一些快速的帮助。

我有一个逗号分隔的CSV文件,可容纳大约2百万行数据(我知道很多,但不幸的是,这是我可以使用的唯一格式)。其中一行中有一些数字,它们有很多小数位(如3.908651901)。我需要将整个列 - 所有200万行 - 舍入到整数。

问题在于,当我在excel中打开它时,它会显示“仅显示100万行”。经过更多调查后,我发现excel一次无法处理超过一百万行。

我的问题是:如果我选择整个列并将数字四舍五入到整数将适用于整个2百万行?或者只有100万在excel中显示?

是否有其他可用的程序可以处理2-250万行并将列更改为整数?

2 个答案:

答案 0 :(得分:0)

最简单的方法是编写一个小程序来完成它。这可以用许多不同语言中的任何一种来完成,但是既然你提到了Excel,那么这里有基于VBA的快速和脏的选项,这可能足以完成一次性任务。这不会那么快,我的硬件花了大约一分钟。毫无疑问,其他选择会更快......

这只能起作用,因为数据从未实际触及工作表,因此百万行限制不起作用。

Sub RoundCsv()
    Dim fso As FileSystemObject
    Dim csvIn As TextStream
    Dim csvOut As TextStream
    Dim FinePathAndName As String
    Dim FinePathAndNameNew As String
    Dim ln As String
    Dim dat As Variant
    Dim RoundColumn As Long

    Set fso = New FileSystemObject
    FinePathAndName = "C:\Your\Path\And\File\Name.csv"
    FinePathAndNameNew = "C:\Your\Path\And\File\NameNew.csv"
    RoundColumn = 3 '<-- set to the column number to round, count from 0
    Set csvIn = fso.OpenTextFile(FinePathAndName, ForReading, False)
    Set csvOut = fso.CreateTextFile(FinePathAndNameNew, True)

    Do While Not csvIn.AtEndOfStream
        ln = csvIn.ReadLine
        dat = Split(ln, ",")
        dat(RoundColumn) = Round(dat(RoundColumn))
        ln = Join(dat, ",")
        csvOut.WriteLine ln
    Loop

    csvIn.Close
    csvOut.Close
    Set csvIn = Nothing
    Set csvOut = Nothing
    Set fso = Nothing
End Sub

答案 1 :(得分:0)

我在这里有点晚了但是遇到了同样的问题。经过一些谷歌搜索后,我发现这个名为gSplit的程序可以将一个大的csv拆分成多个较小的文件,并将这些较小的文件放回一个大文件中。

你可以将你的CSV分成一半或三分之一,格式化每一个,然后重新组合它们。

PS我与这个产品没有任何关系,我刚刚找到它并且它解决了我的问题所以我想我会在这里代表它。

http://www.gdgsoft.com/gsplit/