/// <summary> /// 设置列样式,默认带边框 /// </summary> /// <param name="sheet"></param> /// <param name="columnIndex"></param> /// <param name="columnName"></param> /// <param name="columnType"></param> public void SetColumnDefaultStyle(ISheet sheet, int columnIndex, Type columnType = null, HorizontalAlignment?align = null) { if (sheet == null) { throw new ArgumentNullException("sheet"); } if (columnIndex < 0) { throw new IndexOutOfRangeException("columnIndex"); } var previousColumnStyle = sheet.GetColumnStyle(columnIndex); var styleKey = Tuple.Create(columnType, align); ICellStyle defaultColumnStyle; if (!styles.TryGetValue(styleKey, out defaultColumnStyle)) { defaultColumnStyle = CreateCellStyle(); defaultColumnStyle.CloneStyleFrom(defaultCellStyle); if (columnType != null && columnType.IsValueType) { if (columnType == typeof(DateTime)) { defaultColumnStyle.DataFormat = (short)Workbook.CreateFormat("yyyy-MM-dd"); } defaultColumnStyle.Alignment = HorizontalAlignment.Right; } else if (columnType == typeof(string)) { defaultColumnStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("@"); } if (align.HasValue) { switch (align) { case HorizontalAlignment.Center: defaultColumnStyle.Alignment = HorizontalAlignment.Center; break; case HorizontalAlignment.Left: defaultColumnStyle.Alignment = HorizontalAlignment.Left; break; case HorizontalAlignment.Right: defaultColumnStyle.Alignment = HorizontalAlignment.Right; break; } } styles[styleKey] = defaultColumnStyle; } sheet.SetDefaultColumnStyle(columnIndex, defaultColumnStyle); // 刷新已知样式 if (previousColumnStyle != null) { for (int i = sheet.FirstRowNum; i <= sheet.LastRowNum; i++) { var cell = sheet.GetRow(i).GetCell(columnIndex); if (cell != null && Equals(cell.CellStyle, previousColumnStyle)) { cell.CellStyle = defaultColumnStyle; } } } }