我试图验证一行中的单元格不是 null 。如果 null ,我想将单元格的背景颜色更改为 red 。在阅读了如何做之后,我想出了以下代码:
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;
}
我从测试中知道的是,如果找到 null 值,它将进入检查 nulls 的if语句。似乎正在运行代码来更改背景颜色。在循环遍历整个Excel工作表后,变量 status 确实更改为1并显示在弹出窗口中。 根据我对如何操作的理解,它运行正常,但背景颜色保持白色。
答案 0 :(得分:0)
希望这有效。
worksheet.Cells[i, 3].Interior.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red)
答案 1 :(得分:0)
您的代码是正确的,只要设置背景颜色,假设它已被确认。
但你怎么实际保存文件?加载到MemoryStream
后,切断与原始字节数组的连接。您需要执行SaveAs()
或GetAsByteArray()
这样的调用:
xlPackage.SaveAs(new FileInfo(@"c:\temp\myFile.xls"));
调用Save()
只是写入MemoryStream。