在 NPOI.HSSF.UserModel.HSSFSheet.SetColumnWidth(Int32 column, Int32 width) ↵

  • Post author:
  • Post category:其他


 #region 设置自适应宽度(支持中文)
        /// <summary>
        /// 设置自适应宽度(支持中文)
        /// </summary>
        /// <param name="sheet">对象页</param>
        /// <param name="columnCount">列总数</param>
        /// <returns></returns>
        public static ISheet AutoSetWidth(ISheet sheet, int columnCount)
        {

            //获取当前列的宽度,然后对比本列的长度,取最大值
            for (int columnNum = 0; columnNum <= columnCount; columnNum++)
            {
                //sheet.SetColumnWidth(columnNum, 256);
                int columnWidth = sheet.GetColumnWidth(columnNum) / 256;
                for (int rowNum = 1; rowNum <= sheet.LastRowNum; rowNum++)
                {
                    IRow currentRow;
                    //当前行未被使用过
                    if (sheet.GetRow(rowNum) == null)
                    {
                        currentRow = sheet.CreateRow(rowNum);
                    }
                    else
                    {
                        currentRow = sheet.GetRow(rowNum);
                    }

                    if (currentRow.GetCell(columnNum) != null)
                    {
                        ICell currentCell = currentRow.GetCell(columnNum);
                        int length = Encoding.Default.GetBytes(currentCell.ToString()).Length;
                        if (columnWidth < length)
                        {
                            columnWidth = length + 3; //+3为了美观
                        }
                    }
                }
                if (columnWidth > 255)
                    columnWidth = 254;
                sheet.SetColumnWidth(columnNum, columnWidth * 256);


            }

            return sheet;
        }
        #endregion

上面代码是设置表格自适应宽度,

解决这个问题只用设置一下相应列的宽度(宽度不可超过255,不会影响内容)即可,当然调用上面这个方法也行。

sheet.SetColumnWidth(columnNum, columnWidth * 256);。



版权声明:本文为qq_25086397原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。