首页 文章

在Excel中设置C#行为不正常的单元格样式

提问于
浏览
3

我有以下代码片段是一个接受矩形字符串矩阵和写入xls文件的路径的函数 . 它将矩阵的内容放入Excel工作表的单元格中,并根据内容应用一些格式:

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();
}

因此,如果您可以想象,有些行以“日”和“日期”开头,这些行分隔行,如 Headers . 这些行有粗体字和黄色背景 . 除了落在这些分隔行上的单元格外,最左侧的列具有米色背景和斜体文本 . 剩余的单元格是具有白色背景的普通文本 .

当我打开生成的xls文件时,这根本不是我所看到的 . 首先,整个工作表是白色的 . 其次,“日”(在“日期”之前)是粗体但尺寸错误 .

看起来最近使用的颜色应用于整个工作表,字体大小更改仅适用于下一个单元格,而不是我当前所在的单元格 .

1 回答

  • 4

    尝试删除.Style例如

    wsht.Cells[_i, _j].Font.Name
    

    代替

    wsht.Cells[_i, _j].Style.Font.Name
    

    您希望对单元本身进行操作,而不是对其样式进行操作,因为表单上共享该样式的任何其他单元格也会受到影响 .

相关问题