Запись файла .CSV с использованием LinqtoCSV DLL

Я пытаюсь записать файл CSV из списка, используя библиотеку LinqToCSV, найденную на http://www.codeproject.com/Articles/25133/LINQ-to-CSV-library#Installation.

Когда я пытаюсь запустить свою программу, я продолжаю получать исключение CsvColumnAtrributeRequiredException. Так что это не заполнение файла CSV.

Вот мой код:

private void button1_Click(object sender, EventArgs e) // merge files button
{
    if(System.IO.File.Exists("OUTPUT.csv"))
    {
        System.IO.File.Delete("OUTPUT.csv");
        output = new System.IO.StreamWriter("OUTPUT.csv");
    }

    else
    {
        output = new System.IO.StreamWriter("OUTPUT.csv");
    }


    String[] parts = new String[1000];
    String[] parts2 = new String[1000];

    parts = File.ReadAllLines(textBox1.Text);       //gets filepath from top textbox
    parts2 = File.ReadAllLines(textBox2.Text);      //gets filepath from middle textbox




    String[] head = File.ReadAllLines(headingFileBox.Text); //header file array


    //merging the two files onto one list, there is no need to merge the header file because no math is being
    //computed on it
    var list = new List<String>();
    list.AddRange(parts);
    list.AddRange(parts2);



    //foreach loop to write the header file into the output file
    foreach (string h in head)
    {
        output.WriteLine(h);
    }

    //prints 3 blank lines for spaces
    output.WriteLine();
    output.WriteLine();
    output.WriteLine("LEASE NAME" + "," + "FIELD NAME" + "," + "RESERVOIR" + "," + "OPERATOR" + "," +"COUNTY" + "," + "ST" + "," + "MAJO" + "," + "RESV CAT" + "," + "DISCOUNT RATE"
        + "," + "NET OIL INTEREST" + "," + "NET GAS INTEREST" + "," + " WORKING INTEREST" + "," + "GROSS WELLS" + "," + "ULT OIL" + "," + "ULT GAS" + "," + "GROSS OIL" + "," 
        + "GROSS NGL" + "," + "GROSS GAS" + "," + "NET OIL" + "," + "NET GAS" + "," + "NET NGL" + "," +"REVENUE TO INT." + "," + "OPER. EXPENSE" + "," + "TOT INVEST." + "," 
        + "REVENUE OIL" + "," + "REVNUE GAS" + "," + "OPERATING PROFIT" + "," + "REVENUE NGL" + "," + "DISC NET INCOME" + "," + "SEQ" + "," + "WELL ID" + "," + "INC ASN" + "," 
        + "LIFE YEARS" + "," + "OWN QUAL" + "," + "PRODUCTION TAX" + "," + "AD VALOREM TAX");
    output.WriteLine();
    output.WriteLine();

    String[] partsComb = list.ToArray(); // string array that takes in the list
    Array.Sort(partsComb);

    CsvFileDescription outputFileDescription = new CsvFileDescription
    {
        SeparatorChar = '\t',
        FirstLineHasColumnNames = false, 
    };

    CsvContext cc = new CsvContext();
    cc.Write(partsComb ,output, outputFileDescription);

Я просто пытаюсь запустить это, чтобы правильно вывести его в файл CSV. Любая помощь будет принята с благодарностью.


person Stock    schedule 30.05.2013    source источник


Ответы (1)


Похоже, ваш код не использует какие-либо функции Linq2Csv.

Вы получаете сообщение об ошибке, потому что просто пытаетесь вывести строку, не имеющую атрибута csvcolumn.

Как вы думаете, зачем вам нужен linq2csv? Из вашего кода, который вы читаете в 2 файлах, отсортируйте строки из этих файлов, а затем попробуйте записать результат обратно. Вы не используете какие-либо функции Linq2csv. Вы можете просто записать этот результат прямо в файл и не использовать linq2csv.

В качестве альтернативы создайте класс, соответствующий данным, которые вы читаете, а затем следуйте инструкциям в статье, чтобы прочитать файл в списке этого класса. объединить и снова записать, используя linq2csv.

Подробнее

Эта строка из статьи считывает данные в

IEnumerable<Product> products = cc.Read<Product>("products.csv", inputFileDescription);

Вам нужно сделать это для каждого файла, который вы хотите прочитать, в 2 списка, например, parts и parts2 из вашего кода.

сделав это, следуйте примеру записи файла, но передайте parts.union(parts2) вместо products2.

cc.Write(products2, "products2.csv", outputFileDescription);
person Simon Halsey    schedule 30.05.2013
comment
Не могли бы вы написать крошечный пример того, как это будет выглядеть для linq2csv? - person Stock; 30.05.2013
comment
Как бы я пополнил этот список? Я создал класс, как сказано в статье, с разными столбцами данных. - person Stock; 31.05.2013