/// <summary>
 /// 设置总计单元格的数据
 /// </summary>
 /// <param name="cell">总计单元格</param>
 /// <param name="rowIndex">当前行的索引</param>
 /// <param name="startRowIndex">内容数据的开始行</param>
 /// <param name="columns">当前列信息</param>
 protected virtual void SetTotalCellValue(ICell cell, int rowIndex, int startRowIndex, ColumnsMapping columns)
 {
     if (columns.IsTotal)
     {
         string colItem = CellReference.ConvertNumToColString(columns.ColumnsIndex);
         cell.CellStyle = totalStyle;
         cell.SetCellFormula(string.Format("SUM({0}{1}:{2}{3})", colItem, startRowIndex, colItem, rowIndex));
     }
 }
        /// <summary>
        /// 设置单元格的数据
        /// </summary>
        /// <param name="cell">单元格对像</param>
        /// <param name="rowIndex">单元格行索引</param>
        /// <param name="drValue">单元格数据</param>
        /// <param name="columns">单元格的列信息</param>
        protected virtual void SetCellValue(ICell cell, int rowIndex, string drValue, ColumnsMapping columns)
        {
            cell.CellStyle = contentsStyle;
            if (!string.IsNullOrEmpty(columns.ColumnsData))
            {
                PropertyInfo info = GetObjectProperty(columns.ColumnsData);
                switch (info.PropertyType.FullName)
                {
                case "System.String":     //字符串类型
                    double result;
                    if (IsNumeric(drValue, out result))
                    {
                        double.TryParse(drValue, out result);
                        cell.SetCellValue(result);
                        break;
                    }
                    else
                    {
                        cell.SetCellValue(drValue);
                        break;
                    }

                case "System.DateTime":     //日期类型
                    if (string.IsNullOrEmpty(drValue) || drValue == "0001/1/1 0:00:00")
                    {
                        cell.SetCellValue("");
                    }
                    else
                    {
                        DateTime dateV;
                        DateTime.TryParse(drValue, out dateV);
                        cell.SetCellValue(dateV);
                        cell.CellStyle = dateStyle;     //格式化显示
                    }
                    break;

                case "System.Boolean":     //布尔型
                    bool boolV = false;
                    bool.TryParse(drValue, out boolV);
                    cell.SetCellValue(boolV);
                    break;

                case "System.Int16":     //整型
                case "System.Int32":
                case "System.Int64":
                case "System.Byte":
                    int intV = 0;
                    int.TryParse(drValue, out intV);
                    cell.SetCellValue(intV);
                    break;

                case "System.Decimal":     //浮点型
                case "System.Double":
                    double doubV = 0;
                    double.TryParse(drValue, out doubV);
                    cell.SetCellValue(doubV);
                    break;

                case "System.DBNull":     //空值处理
                    cell.SetCellValue("");
                    break;

                default:
                    cell.SetCellValue("");
                    break;
                }
            }
            else
            {
                cell.SetCellValue("");
            }
        }