CellStyle意外地应用于工作表中的所有单元格 - NPOI?

Kin*_*ing 4 c# export-to-excel npoi

我不明白为什么会发生这种情况,首先我尝试在第一行的列标题中应用粗体文本,然后我想将标题单元格的边框设置为MEDIUM,但此MEDIUM边框样式应用于所有单元格表格.以下相同代码中存在更多问题:

  1. 我的列标题中的文本(在第一行中)不是我想要的粗体.
  2. 我的列标题中的文本颜色不是我想要的红色.

这是我的代码(使用NPOI库处理):

private void CreateATest(string filename)
    {
        FileStream fs = new FileStream(filename, FileMode.Create, FileAccess.Write);
        HSSFWorkbook wb = new HSSFWorkbook();
        ISheet sheet = wb.CreateSheet("NPOI");
        IRow row = sheet.CreateRow(0);
        row.RowStyle = wb.CreateCellStyle();
        row.RowStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.CENTER;

        row.RowStyle.VerticalAlignment = VerticalAlignment.CENTER;            
        row.RowStyle.WrapText = true;
        IFont font = wb.CreateFont();
        font.Boldweight = 3;
        font.Color = (short) ColorTranslator.ToWin32(Color.Red);
        font.FontHeight = 30;
        row.RowStyle.SetFont(font);
        int i = 0;
        foreach (string header in new string[] { "ID", "Name", "Age" })
        {
            row.CreateCell(i++).SetCellValue(header);
            row.Cells[i - 1].CellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.MEDIUM;
            row.Cells[i - 1].CellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.MEDIUM;
            row.Cells[i - 1].CellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.MEDIUM;
        }
        row.Cells[i - 1].CellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.MEDIUM;
        Random rand = new Random();
        for (i = 1; i < 1000; i++)
        {
            IRow row1 = sheet.CreateRow(i);
            for (int j = 0; j < 3; j++)
            {
                row1.CreateCell(j).SetCellValue(rand.Next(100));
            }
        }
        wb.Write(fs);
        fs.Close();
    }
Run Code Online (Sandbox Code Playgroud)

请为我修好,我对NPOI很新,刚试过使用它.非常感谢您的帮助.谢谢.(<---我不知道为什么这个'谢谢'无法跳到下一行,即使我在输入之前输入了Enter键)

Yur*_*ski 6

格式问题是由于Excel格式化插入行的方式.他们从上面的行中获取他们的样式信息.你可以通过将行格式化为粗体,然后在下面插入一行来测试这一点 - 新行也将以粗体显示.您可以先尝试插入其余的行,然后再对标题行进行格式化.不幸的是,我没有足够的声誉来评论这个而不是答案,因为我无法帮助你解决其他两个问题.

  • 谢谢,您可能对Excel非常了解,但该规则可能适用于Excel Interop(Excel Automation),我正在使用NPOI,它通过其他机制编辑和修改Excel文件.我已经提到了NPOI库的一个例子,Cell样式可以在创建后立即应用.我的代码中的错误点是我没有为我的单元格创建新样式,在这种情况下,CellStyle将是单元格所属行的RowStyle.我自己解决了这个问题,谢谢你,但是你应该接受我的接受.请继续坚持stackoverflow :) (2认同)