大型CSV选项卡式分隔文本文件无法在Excel 2011中打开,也无法在Mac上打开

时间:2014-09-21 20:57:02

标签: c++ excel csv excel-2011

我们的C ++代码库中有一个工具可以将EEG浮点值输出到Tabbed分隔文本中。例如,如果我们有256个通道和550000个样本,我们输出一个CSV Tabbed测试文件,该文件应该在Excel中打开,包含256列和550000行。

当我尝试在Open Office中打开此文件时(按照打开TDT文件的说明),我可以看到进度条工作非常缓慢,最终完成,但文件永远不会打开。

当我尝试在Excel 2011 for Mac中打开它时,它会挂起几分钟,然后我最终得到一个对话框“没有足够的内存”。我看看活动监视器,我有16演出的内存,大约2.7使用,当Excel返回此消息时,我仍然有大约6演出内存可用。转换此文件后的大小从大约560MB到1.81 gigs,这似乎与值的字符串大小相符。

较小的文件,如100000个样本和256个通道打开正常,看起来正确。

根据Excel的文档,它应该能够显示超过100万行和类似16000列。

我写了一个Python脚本来检查文件,它应该有550,000行。 我还写了一些C ++测试代码,以确保它不是我正在做的任何事情。

代码段:

// C style file stream.
#include <cstdio>
#include <iostream>

int main(int argc, const char * argv[])
{
    std::cout<<"Procesing"<<std::endl;
    std::string fileURI = "/Users/mmurphy/Desktop/TabbedTestFile.txt";
   float eeg = 87658.98765;

    // Create a C style file stream object.
    FILE* dataStream;

    dataStream = fopen(fileURI.c_str(), "w+");

    for(int32_t s = 0; s < 550000; s++){


        for(int32_t c = 0; c < 256; c++){

            fprintf(dataStream, "%f\t",eeg);
        }

        // Simulate the Vref Channel (257)
        fprintf(dataStream, "%f\n",0.0);

    }

    // Close the fileStream
    fclose(dataStream);

    std::cout<<"Complete"<<std::endl;

}

如果我将列数从256更改为3,则可以正常工作。我应该假设,因为在Excel和OO中都发生了这种情况,OS Mavericks可能会引入某种类型的错误吗?

感谢任何信息。

0 个答案:

没有答案