2012-12-10 59 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也会受到影响。

相关问题