2013-05-30 59 views
0

我試圖使用在http://www.codeproject.com/Articles/25133/LINQ-to-CSV-library#Installation上找到的LinqToCSV庫從列表中寫入CSV文件。使用LinqtoCSV DLL編寫.CSV文件

當我嘗試運行我的程序時,我不斷收到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。

或者,創建一個與您正在閱讀的數據相匹配的類,然後按照文章中的說明將該文件讀入該類的列表中。合併&使用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