2012-12-10 58 views
3

以下代碼片段是一個函數,它接受字符串的矩形矩陣和寫入xls文件的路徑。它把矩陣到Excel工作表的單元格的內容,並應用基於某些內容格式:在Excel中設置單元格樣式從C#行爲不端

public static void WriteXL(string[,] matrix, string path) 
{ 
    XL.Application app = new XL.Application(); 
    XL.Workbook wbk = app.Workbooks.Add(); 
    XL.Worksheet wsht = wbk.Worksheets.Add(); 

    for (int i = 0; i < matrix.GetLength(0); i++) 
    { 
     for (int j = 0; j < matrix.GetLength(1); j++) 
     { 
      int _i = i + 1; 
      int _j = j + 1; 

      if (matrix[i, 0] == "Day" || matrix[i, 0] == "Date") 
      { 
       wsht.Cells[_i, _j].Font.Bold   = true; 
       wsht.Cells[_i, _j].Font.Italic   = false; 
       wsht.Cells[_i, _j].Style.Font.Name  = "Arial"; 
       wsht.Cells[_i, _j].Style.Font.Size  = 12; 
       wsht.Cells[_i, _j].Style.Interior.Color = NumberFromColor(Color.Yellow); 
      } 
      else if (j == 0) 
      { 
       wsht.Cells[_i, _j].Font.Bold   = false; 
       wsht.Cells[_i, _j].Font.Italic   = true; 
       wsht.Cells[_i, _j].Style.Font.Name  = "Arial"; 
       wsht.Cells[_i, _j].Style.Font.Size  = 12; 
       wsht.Cells[_i, _j].Style.Interior.Color = NumberFromColor(Color.Beige); 
      } 
      else 
      { 
       wsht.Cells[_i, _j].Font.Bold   = false; 
       wsht.Cells[_i, _j].Font.Italic   = false; 
       wsht.Cells[_i, _j].Style.Font.Name  = "Arial"; 
       wsht.Cells[_i, _j].Style.Font.Size  = 10; 
       wsht.Cells[_i, _j].Style.Interior.Color = NumberFromColor(Color.White); 
      } 

      wsht.Cells[_i, _j].Value = matrix[i, j]; 
     } 
    } 

    wbk.SaveAs(path); 
    wbk.Close(); 
    app.Quit(); 
    app = null; 

    GC.Collect(); 
    GC.WaitForFullGCComplete(); 
    GC.WaitForPendingFinalizers(); 
} 

所以,如果你可以想像,有以「天」和「日期」開始的行這是劃分行,如標題。這些行具有粗體字體和黃色背景。除了位於這些分隔行上的單元格之外,最左邊的列具有米色背景和斜體文本。其餘的單元格是具有白色背景的正常文本。

當我打開生產的xls文件時,這並不是我所看到的。首先,整個工作表是白色的。其次,「日」(在「日期」之前)是粗體的,但大小錯誤。

它看起來像使用應用到整個工作表最近彩色和字體大小的變化只適用於下一個單元格,而不是電池我現在願意加入,

+1

嘗試刪除'.Style'例如'wsht.Cells [_i,_j] .Font.Name'而不是'wsht.Cells [_i,_j] .Style.Font.Name'你想操作單元格本身,而不是它的風格。 –

+0

修好了!讓它成爲答案,我會接受。 – Ozzah

回答

4

嘗試丟棄.Style如

wsht.Cells[_i, _j].Font.Name 

,而不是

wsht.Cells[_i, _j].Style.Font.Name 

你想對細胞本身,而不是它的風格進行操作,因爲它們共享使紙張上的任何其他細胞STYL e也會受到影響。

相關問題