ColumnSettings.cs 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. namespace Masuit.Tools.Excel
  5. {
  6. /// <summary>
  7. /// 表格列设置项
  8. /// </summary>
  9. public class ColumnSettings
  10. {
  11. internal readonly Dictionary<int, string> ColumnTypes = new();
  12. private readonly NumberFormater _numberFormater = new("ABCDEFGHIJKLMNOPQRSTUVWXYZ", 1);
  13. /// <summary>
  14. /// 设置列格式
  15. /// </summary>
  16. /// <param name="index">列索引,从1开始</param>
  17. /// <param name="format">格式字符串,例如:"¥"#,##0.00;"¥"\-#,##0.00</param>
  18. /// <returns></returns>
  19. public ColumnSettings SetColumnFormat(int index, string format)
  20. {
  21. ColumnTypes.Add(index, format);
  22. return this;
  23. }
  24. /// <summary>
  25. /// 设置列格式
  26. /// </summary>
  27. /// <param name="column">列索引,从A开始</param>
  28. /// <param name="format">格式字符串,例如:"¥"#,##0.00;"¥"\-#,##0.00</param>
  29. /// <returns></returns>
  30. public ColumnSettings SetColumnFormat(string column, string format)
  31. {
  32. if (string.IsNullOrEmpty(column))
  33. {
  34. throw new ArgumentException("列索引不能为空");
  35. }
  36. column = string.Intern(column.ToUpper());
  37. if (column.Except(_numberFormater.Characters).Any())
  38. {
  39. throw new ArgumentException("列索引非法:" + column);
  40. }
  41. ColumnTypes.Add((int)_numberFormater.FromString(column), format);
  42. return this;
  43. }
  44. /// <summary>
  45. /// 设置列格式
  46. /// </summary>
  47. /// <param name="index">列索引,从1开始</param>
  48. /// <param name="format">格式字符串,例如:"¥"#,##0.00;"¥"\-#,##0.00</param>
  49. /// <returns></returns>
  50. public ColumnSettings SetColumnFormat(int[] index, string format)
  51. {
  52. foreach (var i in index)
  53. {
  54. SetColumnFormat(i, format);
  55. }
  56. return this;
  57. }
  58. /// <summary>
  59. /// 设置列格式
  60. /// </summary>
  61. /// <param name="columns">列索引,从A开始</param>
  62. /// <param name="format">格式字符串,例如:"¥"#,##0.00;"¥"\-#,##0.00</param>
  63. /// <returns></returns>
  64. public ColumnSettings SetColumnFormat(string[] columns, string format)
  65. {
  66. foreach (var i in columns)
  67. {
  68. SetColumnFormat(i, format);
  69. }
  70. return this;
  71. }
  72. }
  73. }