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

标签 c# export-to-excel npoi

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

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

请为我修复它,我是 NPOI 的新手,刚刚尝试使用它。非常感谢您的帮助。 谢谢。 (<---我不知道为什么这个'Thanks'不能跳到下一行,即使我在输入之前输入回车)

最佳答案

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

关于c# - CellStyle 意外应用于工作表中的所有单元格 - NPOI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15937053/

相关文章:

c# - Moq设置方法返回值

c# - 在@html.textboxFor 中传递额外的属性 - ASP.NET

c# - 如何设置下面的导航属性?

coldfusion - 使用数据格式时逗号无效

c# - 在 C# 中直接在 DateTimePicker 上转到月份和年份

java - 在weblogic 11 + linux中无法成功导出excel

asp.net - 中继器到 xls 将我的中继器按钮也导出到 xls 中

c# - NPOI:如何在条件格式中使用自定义 XSSFColor?

linux - 为什么 NPOI xlsx 文件生成在 Linux 服务器上不起作用

c# - 如何在 ASP MVC 中下载 NPOI 生成的 xls 文件