2011-10-17 60 views
1

我有一個將數據導出到excel的asp.net應用程序。我需要遮蔽excel文件中的單元格。使用asp.net和EPPlus顯示excel背景陰影的邏輯

我想第一行有一個黑暗的背景。第二行是淺灰色背景,第三行是普通白色。然後循環(暗灰色,淺灰色,白色等)。

目前,使用EPPlus,這是我的代碼:

 Dim colIndex As Integer = 1 
     Dim rowIndex As Integer = 1 

     Dim xlRow = excelWorksheet.Row(rowIndex) 
     Dim xlCell = excelWorksheet.Cells(rowIndex, colIndex) 

     Dim CellFill = xlCell.Style.Fill 
     Dim RowFill = xlRow.Style.Fill 

     CellFill.PatternType = ExcelFillStyle.Solid 
     RowFill.PatternType = ExcelFillStyle.Solid 
     RowFill.BackgroundColor.SetColor(Drawing.Color.DarkGray) 

這將是非常漫長和複雜的,如果我是爲每一個單元代碼。我怎樣才能把它變成一個循環?理想情況下,我想了一系列的列(如A欄:列E)

+0

將3個填充顏色放入數組中,然後使用** Mod **運算符從rowIndex變量計算數組索引。 –

+0

有趣..我嘗試過,但無法獲得邏輯工作。你能抽出一個僞碼塊嗎? – DotNetRookie

+1

對不起 - 不是VB.NET人員:下面Tim的解決方案几乎是一樣的東西。 –

回答

2

未經測試,但應該給你的線索:

For row = workSheet.Dimension.Start.Row To workSheet.Dimension.End.Row 
    Dim pos = row Mod 3 
    Dim rowRange = workSheet.Row(row) 
    Dim RowFill = rowRange.Style.Fill 
    RowFill.PatternType = ExcelFillStyle.Solid 
    Select Case pos 
     Case 0 
      RowFill.BackgroundColor.SetColor(Drawing.Color.LightGray) 
     Case 1 
      RowFill.BackgroundColor.SetColor(Drawing.Color.DarkGray) 
     Case 2 
      RowFill.BackgroundColor.SetColor(Drawing.Color.White) 
    End Select 
Next 
0

如果有人正在尋找C#,因爲是一

for (int row = worksheet.Dimension.Start.Row; row <= worksheet.Dimension.End.Row; row++) 
{ 
    int pos = row % 3; 
    ExcelRow rowRange = worksheet.Row(row); 
    ExcelFill RowFill = rowRange.Style.Fill; 
    RowFill.PatternType = ExcelFillStyle.Solid; 
    switch (pos) 
    { 
     case 0: 
      RowFill.BackgroundColor.SetColor(System.Drawing.Color.LightGray); 
      break; 
     case 1: 
      RowFill.BackgroundColor.SetColor(System.Drawing.Color.DarkGray); 
      break; 
     case 2: 
      RowFill.BackgroundColor.SetColor(System.Drawing.Color.White); 
      break; 
    }