2016-11-03 55 views
1

我有這塊代碼,並希望在寫入之前插入標題。我嘗試了各種方法,但它一直在讀取和混合正在寫入文件的數據。我嘗試在if區塊之外添加標題,但它仍然沒有區別,我也嘗試在文件創建後立即添加它,但是結果相同。我想知道如何在沒有數據的情況下添加數據將標題添加到我的c#excel輸出文件中

using (StreamWriter stream = new StreamWriter("cross_check.xls", true)) 
     { 

      if (stream == null) 
      { 

       MessageBox.Show("File can't be written"); 

      } 

      else 
      { 

       stream.WriteLine(); 
       stream.Write(search.Text); 
       stream.Write("\t "); 
       stream.Write(textBox1.Text); 

       MessageBox.Show("Data Added Successfully"); 

      } 
+0

我會告訴你一個截圖,但讓我試着解釋一下:它的內容是正在被寫入它的數據沒有標題。當我試圖在頭部包含標題時,他們會混合數據。因此,例如。我將代碼和描述作爲標題(正在寫入兩列數據),當我添加讓我們說「貓」它低於「代碼」,並且讓我們說我添加「狗」它將在「描述」下進行,但是當我添加更多數據的結果是頭部複製和移動在添加的任何數據旁邊的數據 – Jevon

+0

您可以創建一個DataTable並使用interop從中創建excel文件。所以標題將與DataTable標題相同。 – Sebi

+0

你的'xls'文件是否包含文本格式?你是否想在文件的開頭添加一個像'Id,Name,Description,Something else'這樣的新行? –

回答

1

將數據寫入文件時可以包含標題。但如果你有哪些需要修改,如果您的Excel文件的內容是文本內容(這似乎是基於對這個問題),你可以簡單地使用File.ReadAllLinesFile.WriteAllLines這樣一些現有的文件:

var file = @"d:\file.xls"; 
var lines = System.IO.File.ReadAllLines(file).ToList(); 
lines.Insert(0, "Some text"); 
System.IO.File.WriteAllLines(file, lines); 

使用File.ReadAllLines您擁有文件的所有行,您也可以對文件內容執行額外的處理。例如,您可以通過分隔符分割所有行,並操作每個單元格或添加新列等。你也可以將結果形成一個像DataTable這樣的數據結構,並在DataGridView中顯示它來編輯它們並將它們保存迴文件。

+0

我只需要它寫入文件,以便ReadAllLines不是真的需要所以我猜測它可以這樣做: ' string path = @「Test.txt」 ; //此文本僅添加一次到文件中。 (!File.Exists(path)) { 。 string [] createText = {「Code」,「Description」,「NDC」}; File.WriteAllLines(path,createText); }' – Jevon

+0

ReadAllLines被使用,因爲你說'Prepend',所以答案假設你有一些文件內容,如果你沒有,它並不意味着它只是在文件中保存一些文本。 –

+0

我還沒有掌握評論代碼塊。對不起,上面的文字 – Jevon