目前,在做一个在winform中显示excle的功能(有个excel的模板,是根据模板生成excel)。从数据库中取出数据,然后把一些文字数据填充到excel中,还有些,就是将取出的数据,做解析,然后在excel中画出相关的菱形、圆形等,并控制这些图形的位置。
之前用MS的excel可以直接实现此功能,但是就是速度很慢。20条数据,大概就需要50s在网上查,听很多人说NPOI比较好,可以速度快些,而且可以不需要考虑office的版本的问题。
现在,用NPOI实现了文字数据的显示功能。
但是,现在有个问题:我在excel的模板中,设置了某些样式:如,第一列的文字是竖着的。但是,如果我在代码中,再此设置第一列的单元格的样式,他就会将我的模板中设置的些样式都忽略掉。我设置的是,第一列的合并了的单元格A5到A10合并了,现在要在此合并了的单元格外面添加边框。
代码中写的单元格样式是:
 private static HSSFCellStyle getCellStyle()
        {
            HSSFCellStyle celStype = workbook.CreateCellStyle();
            celStype.BorderBottom = HSSFCellStyle.BORDER_THIN;
            celStype.BorderLeft = HSSFCellStyle.BORDER_THIN;
            celStype.BorderRight = HSSFCellStyle.BORDER_THIN;
            celStype.BorderTop = HSSFCellStyle.BORDER_THIN;
            return celStype;
        }在显示时,就只显示了我设置的这个边框,原来的模板中的样式什么的都没有了。
怎么样可以保持原来的样式,又可以在代码中添加新的样式啊????ExcelNPOI

解决方案 »

  1.   


    我看到有个相关的方法:
    HSSFCellStyle celStype = workbook.GetCellStyleAt(i);这个地方的i是表示index within the Set of styles就不晓得这个地方i值应该赋多少了???
      

  2.   

    没有人这样系统的用过NPOI吗?
      

  3.   

    1、将原有的样式保存到temp里;
    2、向temp添加新样式;
    3、将新样式应用
      

  4.   

    我记得好像不是createCellStyle,好像是GetCellStyle来着
      

  5.   

    看到EXCEL就想吐,已经研究了几年和仍在研究.net和Excel解决方案的人 飘过~
      

  6.   

    应该不会吧楼主你怎么设置的! 你在模版中 把第一列的 单元格样式设置好! NPOI 写第一列 值得时候 是不会改变其样式的! 除非你是新增的行!列! 新增行列要保留 一定的样式 是比较麻烦的! 比如合并了单元格的!string mFile = ".\\Model.xls";
    string fName = ".\\" + tNo + ".xls";
    File.Copy(mFile, fName, true);FileStream file = new FileStream(mFile, FileMode.Open, FileAccess.Read);
    HSSFWorkbook hssfWookBook = new HSSFWorkbook(file);
    HSSFSheet sheet1 = (HSSFSheet)hssfWookBook.GetSheet("Sheet1");sheet1.GetRow(0).GetCell(0).SetCellValue(oValue);FileStream file2 = new FileStream(fName, FileMode.Create);
    hssfWookBook.Write(file2);
    file2.Close();
    file.Close();