C中的CSV文件生成器

时间:2011-02-10 09:35:21

标签: c linux csv generator

我是否可以在Linux机器上运行任何C程序,并创建给定维度(行x列)的csv文件并将其存储在硬盘上?

3 个答案:

答案 0 :(得分:3)

CSV文件只是一个带有逗号分隔值的纯文本文件,因此您可以在纯文本编辑器中手动创建它。 RFC 4180中有一个规范。

第一行通常用于列名,例如:

Name, Account no, Amount
Niels, 1234, $0.99
Thomas, 8888, $10.00
Per, 3454, $9.00
Rasmus, 9412, $99.99

用于创建普通空文件的小型c程序可能如下所示:

/*
 * makecsv.c 
 */

#include <stdio.h>

int main(int argc, char **argv) {
   if( argc != 3) {
      printf("Mandatory arguments: <rows> <cols>\n");
         return 1;
      }

      int row, col;
      for(row = 0; row < atoi(argv[1]); row++) {
         for(col = 0; col < atoi(argv[2]); col++) {
            if(col > 0) {
               printf(", ");
            }
            /* Default values are "row x col" */
            printf("\"%dx%d\"", row, col);
         }
         printf("\r\n");
       }
       return 0;
}

我使用以下命令编译并运行它:

$ gcc -o makecvs makecsv.c 
$ ./makecvs 3 4
"0x0", "0x1", "0x2", "0x3"
"1x0", "1x1", "1x2", "1x3"
"2x0", "2x1", "2x2", "2x3"

$

要将输出放在“unix way”文件中,请使用以下命令将输出传递给文件:

$ ./makecvs 3 4 > myFile.csv

答案 1 :(得分:1)

如果您正在寻找现有的实用程序,那么您可能在错误的网站上,但是这样的内容会打印出一个带有双引号单元格且没有标题行的空CSV文件:

for (int i = 0; i < rows; ++i) {
    for (int j = 0; j < cols-1; ++j) {
        printf("\"\",");
    }
    printf("\"\"\n");
}

获取一些任意数据并将其转换为CSV文件更难。首先,输入数据格式是什么?其次,正确地逃避数据。

答案 2 :(得分:0)

我做了一个搜索并想出了: http://sourceforge.net/projects/libcsv/

所以这只是csv处理的“库”的一个例子。可能值得一看glib,也许是apr,看看他们是否也有库中的东西。或者您可以按照此处的建议“手动”进行操作。