using Excel = Microsoft.Office.Interop.Excel;
1. 字体设置(针对Range)
// 字体颜色/字体加粗
Excel.Range cellFont1 = ws1.Cells[1, 1];
Excel.Range cellFont2 = ws1.Cells[objDataArr.GetLength(0), objDataArr.GetLength(1)];
ws1.get_Range(cellFont1, cellFont2).Font.Bold = true; // 加粗
ws1.get_Range(cellFont1, cellFont2).Font.ColorIndex = Color.FromArgb(0, 0, 0); // 黑色
ws1.get_Range(cellFont1, cellFont2).EntireRow.AutoFit(); // 自动适应行宽
ws1.get_Range(cellFont1, cellFont2).EntireColumn.AutoFit(); // 自动适应列宽
ws1.get_Range(cellFont1, cellFont2).HorizontalAlignment = Excel.Constants.xlCenter; //水平居中
ws1.get_Range(cellFont1, cellFont2).VerticalAlignment = Excel.Constants.xlCenter; //垂直居中
ws1.get_Range(cellFont1, cellFont2).Interior.Color = Color.FromArgb(255, 255, 255); // 白色
2. 单元格边框设置(针对Cells)
边框:上下左右添加连续线段
for (int i = 1; i <= objDataArr.GetLength(0); i++)
{
for (int j = 1; j <= objDataArr.GetLength(1); j++)
{
Excel.Range cellBorders = ws1.Cells[i, j];
cellBorders.Borders.Weight = 2;
cellBorders.Borders.get_Item(Excel.XlBordersIndex.xlEdgeRight).LineStyle = Excel.XlLineStyle.xlContinuous;
cellBorders.Borders.get_Item(Excel.XlBordersIndex.xlEdgeBottom).LineStyle = Excel.XlLineStyle.xlContinuous;
cellBorders.Borders.get_Item(Excel.XlBordersIndex.xlEdgeTop).LineStyle = Excel.XlLineStyle.xlContinuous;
cellBorders.Borders.get_Item(Excel.XlBordersIndex.xlEdgeLeft).LineStyle = Excel.XlLineStyle.xlContinuous;
}
}
3. 单元格填充颜色(针对Range)
//-- 单元格颜色填充:前2行 --
Excel.Range cellTitle1 = ws1.Cells[1, 1];
Excel.Range cellTitle2 = ws1.Cells[2, objDataArr.GetLength(1)];
ws1.get_Range(cellTitle1, cellTitle2).Interior.Color = Color.FromArgb(184, 204, 228);
//-- 单元格颜色填充:前5数据行 --
Excel.Range cellNG1 = ws1.Cells[3, 1];
Excel.Range cellNG2 = ws1.Cells[7, objDataArr.GetLength(1)];
if (dayEquipNumbers.Max() < 5)
{
cellNG1 = ws1.Cells[3, 1];
cellNG2 = ws1.Cells[objDataArr.GetLength(0) - 1, objDataArr.GetLength(1)];
}
ws1.get_Range(cellNG1, cellNG2).Interior.Color = Color.FromArgb(242, 220, 219);
//-- 单元格颜色填充:最后一行-合计 --
Excel.Range cellSum1 = ws1.Cells[objDataArr.GetLength(0), 1];
Excel.Range cellSum2 = ws1.Cells[objDataArr.GetLength(0), objDataArr.GetLength(1)];
ws1.get_Range(cellSum1, cellSum2).Interior.Color = Color.FromArgb(255, 255, 0);
4. 字体颜色(针对Cells)
// 持续ng-标记红色
int[] cellNgRow = { 3, 7 };
if (dayEquipNumbers.Max() < 5)
{
cellNgRow[1] = objDataArr.GetLength(0) - 1;
}
for (int rowi = cellNgRow[0]; rowi <= cellNgRow[1]; rowi++)
{
for (int dayInd = 0; dayInd < dayEquipNumbers.Length; dayInd++)
{
int coli = 2 + dayInd * 2;
if (objDataArr[rowi - 1, coli - 1] != null)
{
string equip = objDataArr[rowi - 1, coli - 1].ToString();
int equipInd = Array.IndexOf(NgEquip_New, equip);
if (equipInd != -1)
{
Excel.Range cellFontNg = ws1.Cells[rowi, coli];
cellFontNg.Font.Color = Color.FromArgb(255, 0, 0); // 红色
}
}
}
}
5. 单元格合并(针对Range)
// 合并
Microsoft.Office.Interop.Excel.Range mergeStart_0= ws1.Cells[1, 1];
Microsoft.Office.Interop.Excel.Range mergeEnd_0 = ws1.Cells[2, 1];
ws1.get_Range(mergeStart_0, mergeEnd_0).MergeCells = true;
foreach (int colInd in mergeColInd)
{
Microsoft.Office.Interop.Excel.Range mergeStart_1 = ws1.Cells[1, colInd];
Microsoft.Office.Interop.Excel.Range mergeEnd_1 = ws1.Cells[1, colInd + 1];
ws1.get_Range(mergeStart_1, mergeEnd_1).MergeCells = true;
Microsoft.Office.Interop.Excel.Range mergeStart_2 = ws1.Cells[2 + dayEquipNumbers.Max() + 1, colInd];
Microsoft.Office.Interop.Excel.Range mergeEnd_2 = ws1.Cells[2 + dayEquipNumbers.Max() + 1, colInd + 1];
ws1.get_Range(mergeStart_2, mergeEnd_2).MergeCells = true;
}
备注1: