各位大哥好,小弟刚才遇到了个问题,NPOI合并单元格,数据显示不全,数据已自动换行,网上搜了很多高度自适应都解决不了,求问各位大大是怎么调整行高

解决方案 »

  1.   


     static void Main(string[] args)  
            {  
                //说明:设置列宽、行高与合并单元格  
          
                //1.创建EXCEL中的Workbook           
                IWorkbook myworkbook = new XSSFWorkbook();  
      
                //2.创建Workbook中的Sheet          
                ISheet mysheet = myworkbook.CreateSheet("sheet1");  
      
                //4.合并单元格区域 例: 第1行到第1行 第2列到第3列围成的矩形区域  
                mysheet.AddMergedRegion(new CellRangeAddress(0, 0, 1, 2));  
      
                //5.创建Row中的Cell并赋值  
                IRow row0 = mysheet.CreateRow(0);  
                row0.CreateCell(0).SetCellValue("0-0");  
                row0.CreateCell(1).SetCellValue("0-1");  
                row0.CreateCell(3).SetCellValue("0-3");  
                 
                //6.设置列宽   SetColumnWidth(列的索引号从0开始, N * 256) 第二个参数的单位是1/256个字符宽度。例:将第四列宽度设置为了30个字符。  
                mysheet.SetColumnWidth(3, 30 * 256);  
      
                //7.设置行高   Height的单位是1/20个点。例:设置高度为50个点  
                row0.Height=50*20;  
               
                //5.保存         
                FileStream file= new FileStream(@"E:\myworkbook2.xlsx", FileMode.Create);  
                myworkbook.Write(file);  
                file.Close();  
            }  
      

  2.   


    请问怎么操作,能贴个代码我看看吗,谢谢
    合并之前先把要合并的内容都放在第一个单元格。
    http://bbs.csdn.net/topics/392225270 这是我当初的帖子
      

  3.   


    请问怎么操作,能贴个代码我看看吗,谢谢
    我是操作datatable合并,当时没人回。然后我自己写的循环把内容一样的合并到第一个单元格。后来又发现excel2016合并没效果,到现在问题还没解决
      

  4.   


    请问怎么操作,能贴个代码我看看吗,谢谢
    我是操作datatable合并,当时没人回。然后我自己写的循环把内容一样的合并到第一个单元格。后来又发现excel2016合并没效果,到现在问题还没解决我明白你的意思了,我数据显示不全不是说数据获取不到,而是execl合并后行高不够高,内容被遮住了,以前用VBA的时候解决的方法放在NPOI用不了,我非常无奈
      

  5.   

    合并有没有用excel2016打开过,合并还有效果吗
    http://blog.csdn.net/echoshinian100/article/details/38540321 自动获取行高
      

  6.   

    合并有没有用excel2016打开过,合并还有效果吗
    http://blog.csdn.net/echoshinian100/article/details/38540321 自动获取行高你这个方法我看过,但是因为我字体挺大的,而且数据是各种数字英文字符串混合,根本不能获取一个准确的长度,所以高度很不准,以前用VBA也遇到过这种问题,但是找到了解决的方法,将VBA的方法用到NPOI上就不行了,很麻烦,我的execl是WPS,合并有效果,没有2016不知道效果怎么样,你下载个WPS看看合并有没有效果,有效果那就没办法了
      

  7.   

    我是excel2010,有效果,但是user测试时发现不行,他的事excel2016。我们肯定要从user角度出发,不能说要他配合我们来装软件
      

  8.   

    合并单元格后再自适应高度,别说NPOI不行,连Excel也显示不全,这并不是NPOI的问题了。我以前在Aspose.Cells中碰到过类似的问题,后来的解决方案如下:1. 将合并单元格后的文本内容复制到一个没有合并单元格的列中,并设置宽度与被合并的单元格宽度一样
    2. 设置行自适应高度
    3. 删除那个复制列并输出Excel这样就可以了
      

  9.   

    来看看excel 自身的功能:
    我打开 Excel,通过它自动录制宏,得到这样的代码Sub 宏1()
    '
    ' 宏1 宏
    ''
        Range("D8").Select
        With Selection
            .HorizontalAlignment = xlGeneral
            .VerticalAlignment = xlBottom
            .WrapText = False
            .Orientation = 0
            .AddIndent = False
            .IndentLevel = 0
            .ShrinkToFit = True
            .ReadingOrder = xlContext
            .MergeCells = False
        End With
    End Sub
    我让单元格在内容增加时自动缩小字体。估计 Excel 也有类似的“自动增高行高”的功能。
      

  10.   

    话要说回来了,默认地当不同单元分别显示数据时总有一些单元格里边的边框“空隙”。而你“合并单元格”(并且内容合并到前边的单元格里)之后怎么就会让内容显示不全了呢?这起码对于 Excel 来说有些奇怪。对于第三方工具可能出这个 bug,但是 excel 本身应该很少出现。
      

  11.   

    我是excel2010,有效果,但是user测试时发现不行,他的事excel2016。我们肯定要从user角度出发,不能说要他配合我们来装软件我说这个可能是NPOI的问题,我也没办法了。帮不了你
      

  12.   


    我按照你的思路弄出来了效果,但是不能删除,我删除是用这个方法RemoveCell,删除后它又会显示不全了
      

  13.   


    噢,我以前VBA测试过这个问题,因为是这是外国写的,不兼容中文,要是全英文就不会出现显示不全的这个问题,不知道算不算BUG
      

  14.   


    嗯?合并单元格之后并不需要删除啊?你只要把内容合并到第一个单元格就行了,后边的单元格已经自动就不显示了,不需要删除啊?!也许第三方软件对于“合并单元格”有特殊规定。但是Excel 在合并单元格之后,是不需要删除什么单元格的。
      

  15.   


    噢,我回答的是上面的问题,按照他的思路,我删除的是复制到一个没有合并单元格的列中,
    其实这个npoi的机制是这样的,你只要是在一个单元格内自动换行,他的行高会自动适应,但是合并后就不会自动适应,所以我按照他给的思路,在同行的一个没合并的单元格改为和合并的单元格一个宽度,然后自动换行,高度会自动适应,但是他机制很奇怪,删除了那个单元格,这个高度自适应又会还原,很头疼
      

  16.   


    噢,我回答的是上面的问题,按照他的思路,我删除的是复制到一个没有合并单元格的列中,
    其实这个npoi的机制是这样的,你只要是在一个单元格内自动换行,他的行高会自动适应,但是合并后就不会自动适应,所以我按照他给的思路,在同行的一个没合并的单元格改为和合并的单元格一个宽度,然后自动换行,高度会自动适应,但是他机制很奇怪,删除了那个单元格,这个高度自适应又会还原,很头疼1. 我当时的操作是放在最后,新增一列,回头直接删列就行
    2. 在删除以后,不能有任何自适应行高的代码
      

  17.   


    噢,我回答的是上面的问题,按照他的思路,我删除的是复制到一个没有合并单元格的列中,
    其实这个npoi的机制是这样的,你只要是在一个单元格内自动换行,他的行高会自动适应,但是合并后就不会自动适应,所以我按照他给的思路,在同行的一个没合并的单元格改为和合并的单元格一个宽度,然后自动换行,高度会自动适应,但是他机制很奇怪,删除了那个单元格,这个高度自适应又会还原,很头疼1. 我当时的操作是放在最后,新增一列,回头直接删列就行
    2. 在删除以后,不能有任何自适应行高的代码我刚才测试了下,我放到最后才删除,还是会还原,心累
      

  18.   


    噢,我回答的是上面的问题,按照他的思路,我删除的是复制到一个没有合并单元格的列中,
    其实这个npoi的机制是这样的,你只要是在一个单元格内自动换行,他的行高会自动适应,但是合并后就不会自动适应,所以我按照他给的思路,在同行的一个没合并的单元格改为和合并的单元格一个宽度,然后自动换行,高度会自动适应,但是他机制很奇怪,删除了那个单元格,这个高度自适应又会还原,很头疼1. 我当时的操作是放在最后,新增一列,回头直接删列就行
    2. 在删除以后,不能有任何自适应行高的代码我刚才测试了下,我放到最后才删除,还是会还原,心累
    奇怪,可能是NPOI有什么设定的规则。我之前使用的是Aspose.Cells,回头用NPOI试试
      

  19.   


    噢,我回答的是上面的问题,按照他的思路,我删除的是复制到一个没有合并单元格的列中,
    其实这个npoi的机制是这样的,你只要是在一个单元格内自动换行,他的行高会自动适应,但是合并后就不会自动适应,所以我按照他给的思路,在同行的一个没合并的单元格改为和合并的单元格一个宽度,然后自动换行,高度会自动适应,但是他机制很奇怪,删除了那个单元格,这个高度自适应又会还原,很头疼1. 我当时的操作是放在最后,新增一列,回头直接删列就行
    2. 在删除以后,不能有任何自适应行高的代码我刚才测试了下,我放到最后才删除,还是会还原,心累
    奇怪,可能是NPOI有什么设定的规则。我之前使用的是Aspose.Cells,回头用NPOI试试是的,很奇怪,我之前用VBA也没有这种奇怪的设定