使用Aspose.Cells组件生成Excel文件列宽度自适应时出错:Column width must be between 0 and 255

错误提示:Column width must be between 0 and 255

出错处

         /// <summary>          
        /// 设置表页的列宽度自适应          
        /// </summary>          
        /// <param name="sheet">worksheet对象</param>          
        void setColumnWithAuto(Worksheet sheet)          
        {              
            Cells cells = sheet.Cells;              
            int columnCount = cells.MaxColumn;  //获取表页的最大列数              
            int rowCount = cells.MaxRow;        //获取表页的最大行数                            
            for (int col = 0; col < columnCount; col++)              
            {                  
                sheet.AutoFitColumn(col, 0, rowCount);              
            }              
            for (int col = 0; col < columnCount; col++)              
            {  
                cells.SetColumnWidthPixel(col, cells.GetColumnWidthPixel(col) + 30);
            }          
        }

原因分析:撰写代码者是参考网上的代码,如http://www.cnblogs.com/kdkler/p/4508134.html,但由于输出时单个单元格内内容过长,导致报错。

修改:增加一层判断

   /// <summary>          
        /// 设置表页的列宽度自适应          
        /// </summary>         
        /// /// <param name="sheet">worksheet对象</param>       
        public static void setColumnWithAuto(Worksheet sheet)
        {
            Cells cells = sheet.Cells;
            int columnCount = cells.MaxColumn + 1;
            //获取表页的最大列数            
            int rowCount = cells.MaxRow;
            //获取表页的最大行数                     
            for (int col = 0; col < columnCount; col++)
            {
                sheet.AutoFitColumn(col, 0, rowCount);
            }
            for (int col = 0; col < columnCount; col++)
            {
                int pixel = cells.GetColumnWidthPixel(col)+30;
                if (pixel > 255)
                {
                    cells.SetColumnWidthPixel(col, 255);
                }
                else
                {
                    cells.SetColumnWidthPixel(col, pixel);
                }
            }
        }

原文地址:https://www.cnblogs.com/mcwym/p/6888166.html