2012-08-22 188 views
2

我正在從Datatable編寫csv文件。檢查我的代碼如下用顏色代碼編寫csv文件

 public static void SaveDataTableToCsvFile(string AbsolutePathAndFileName, DataTable TheDataTable, params string[] Options) 
    { 
     //variables 
     string separator; 
     if (Options.Length > 0) 
     { 
      separator = Options[0]; 
     } 
     else 
     { 
      separator = ""; //default 
     } 
     string quote = ""; 

     FileInfo info = new FileInfo(AbsolutePathAndFileName); 

     if (IsFileLocked(info)) 
     { 
      MessageBox.Show("File is in use, please close the file"); 
      return; 
     } 
     //create CSV file 
     StreamWriter sw = new StreamWriter(AbsolutePathAndFileName); 

     //write header line 
     int iColCount = TheDataTable.Columns.Count; 
     for (int i = 0; i < iColCount; i++) 
     { 
      sw.Write(TheDataTable.Columns[i]); 
      if (i < iColCount - 1) 
      { 
       sw.Write(separator); 
      } 
     } 
     sw.Write(sw.NewLine); 

     //write rows 
     foreach (DataRow dr in TheDataTable.Rows) 
     { 
      for (int i = 0; i < iColCount; i++) 
      { 
       if (!Convert.IsDBNull(dr[i])) 
       { 
        string data = dr[i].ToString(); 
        data = data.Replace("\"", "\\\"").Replace(",", " "); 
        sw.Write(quote + data + quote); 
       } 
       if (i < iColCount - 1) 
       { 
        sw.Write(separator); 
       } 
      } 
      sw.Write(sw.NewLine); 

     } 
     sw.Close(); 
    } 

代碼適用於我,但我需要在csv的某些單元格中添加顏色代碼。

我該怎麼做?

+1

這將打敗一個CSV文件。你不能用csv文件來做到這一點。 –

+0

[在csv文件中爲Excel製作顏色單元格]可能的副本(http://stackoverflow.com/questions/5716069/make-color-cell-in-csv-file-for-excel) –

回答

14

CSV是一種沒有任何格式的純數據格式。畢竟這是一個純文本文件。所以不,沒有辦法添加顏色。

+2

爲什麼?如果他們的問題是»我該怎麼做?«我認爲答案»你不能«是一個。 – Joey

+0

@Joey你確定嗎?我不能這樣做 ? –

+0

是的,我確定。閱讀鏈接參考,這是事實上的CSV標準。你看到有關格式化的內容嗎?我不。 – Joey

1

CSV(逗號分隔值)文件是一個文本文件。如果不將文件更改爲另一種文件格式(如RTF),則無法將文件添加到顏色中。

+0

儘管RTF是一種完全不同的格式,它代表了豐富文本而不是表格數據。 – Joey

1

喬伊絕對是對的。

但是,如果您的情況允許您輸出XLSX而不是CSV,那麼EPPlus可能是您的解決方案。

例如

using (ExcelPackage ep = new ExcelPackage(AbsolutePathAndFileName)) 
{ 
    ExcelWorksheet worksheet = ep.Workbook.Worksheets.Add("Worksheet1"); 
    worksheet.Cells["A1"].LoadFromDataTable(TheDataTable, true); 
    worksheet.Cells["F4"].BackgroundColor.SetColor(Color.Red); 
    ep.Save(); 
} 
+0

所以如果你有4個Datatables,並且需要將它們全部添加到一個單獨的工作表中並將兩行分隔開來,那麼'EPPlus'仍然會處理這個問題,我注意到了.'Save()'我用來使用'Response .Headers'導出並允許用戶保存或打開網絡上的Excel,EPPlus是否支持他..? – MethodMan

1

你可能想輸出一個.xls(或同等學歷),而不是一個.csv使用一些外部實用工具或CSV文件轉換爲.xls,以便有顏色編碼甚至可以

+0

http://stackoverflow.com/questions/3189308/convert-csv-to-xls-in-java – rshetye