2017-09-13 5 views
1

Ich versuche zu überprüfen, dass eine Zelle in einer Zeile nicht Null ist. Wenn es Null ist, möchte ich die Hintergrundfarbe der Zelle zu rot ändern. Nach der Lektüre, wie das zu tun, ich habe mit dem folgenden Code kommen:Kann die Hintergrundfarbe der Zelle nicht ändern, EPPlus in C#

public int verifyImportFile(FileUpload fup) 
    { 
     int status = 0; 
     //check if there is actually a file being uploaded 
     if (fup.HasFile) 
     { 
      //load the uploaded file into the memorystream 
      using (MemoryStream stream = new MemoryStream(fup.FileBytes)) 
      //Lets the server know to use the excel package 
      using (ExcelPackage xlPackage = new ExcelPackage(stream)) 
      { 
       //Gets the first worksheet in the workbook 
       ExcelWorksheet worksheet = xlPackage.Workbook.Worksheets[1]; 
       //Gets the row count 
       var rowCnt = worksheet.Dimension.End.Row; 
       //Gets the column count 
       var colCnt = worksheet.Dimension.End.Column; 
       //Beginning the loop for data gathering 
       for (int i = 2; i < rowCnt; i++) //Starts on 2 because excel starts at 1, and line 1 is headers 
       { 
        //If there is no value in column 3, proceed 
        if (worksheet.Cells[i, 3].Value == null) 
        { 
         worksheet.Cells[i, 3].Style.Fill.PatternType = ExcelFillStyle.Solid; 
         worksheet.Cells[i,3].Style.Fill.BackgroundColor.SetColor(Color.Red); 
         status = 1; 
        }       
       } 
       xlPackage.Save(); 
      }    
     } 
     return status; 
    } 

Was ich von der Prüfung weiß, ist, dass, wenn ein null Wert gefunden wird, ist es die if-Anweisung, die für nulls prüft eintritt. Es scheint, den Code auszuführen, um die Hintergrundfarbe zu ändern. Nachdem es die gesamte Excel-Tabelle durchlaufen hat, ändert sich die Variable Status zu 1 und wird in einem Popup angezeigt. Von meinem Verständnis, wie dies zu tun ist, läuft es richtig, aber die Hintergrundfarbe bleibt weiß.

+0

Funktioniert es, wenn Sie nur eine einfache Methode erstellen, die Zelle A1 rot färbt? – silkfire

+0

@silkfire Nur die Änderung vorgenommen. Es führt den Code, aber immer noch nicht die Farbe – TGills

+0

Versuchen Sie, Hilfe in ihren Support-Foren vielleicht suchen? – silkfire

Antwort

0

Ihr Code stimmt insofern, als die Hintergrundfarbe eingestellt wurde, vorausgesetzt, dass sie bestätigt wurde.

Aber wie speichern Sie die Datei tatsächlich? Sobald Sie zu einem MemoryStream laden, wird die Verbindung zu dem ursprünglichen Byte-Array getrennt. Sie benötigen einen SaveAs() oder GetAsByteArray() Aufruf wie dies zu tun:

xlPackage.SaveAs(new FileInfo(@"c:\temp\myFile.xls")); 

Aufruf Save() gerade schreibt in die Memorystream.

+0

Je mehr du weißt ... Danke! – TGills

0

Hoffentlich funktioniert das. worksheet.Cells[i, 3].Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red)

Verwandte Themen