2013-05-30 2 views
0

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

Когда я пытаюсь запустить свою программу, я продолжаю получать исключение 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. Любая помощь будет принята с благодарностью.

ответ

1

Ваш код не использует ни одну из функций Linq2Csv.

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

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

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

Подробнее

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

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

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

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

cc.Write(products2, "products2.csv", outputFileDescription); 
+0

Не могли бы вы написать небольшой пример того, что будет выглядеть для linq2csv? – Stock

+0

Как бы я заполнил этот список? Я создал класс, как сказано в статье с разными столбцами данных. – Stock