Fixes
This commit is contained in:
parent
5262be530e
commit
8197103098
@ -0,0 +1,42 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Components.NonVisualComponents.HelperModels
|
||||
{
|
||||
/// <summary>
|
||||
/// Вспомогательный класс для настройки колонки Excel
|
||||
/// </summary>
|
||||
public class ColumnInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// Название поля объекта
|
||||
/// </summary>
|
||||
public string FieldName { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Заголовок колонки
|
||||
/// </summary>
|
||||
public string Header { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Ширина колонки
|
||||
/// </summary>
|
||||
public int Width { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Конструктор
|
||||
/// </summary>
|
||||
/// <param name="fieldName"></param>
|
||||
/// <param name="header"></param>
|
||||
/// <param name="width"></param>
|
||||
public ColumnInfo(string fieldName, string header, int width)
|
||||
{
|
||||
FieldName = fieldName;
|
||||
Header = header;
|
||||
Width = width;
|
||||
}
|
||||
}
|
||||
}
|
@ -52,8 +52,7 @@ namespace Components.NonVisualComponents
|
||||
/// <exception cref="ArgumentNullException"></exception>
|
||||
/// <exception cref="Exception"></exception>
|
||||
public void CreateDocument<T>(string filepath, string title,
|
||||
List<MergeCells> mergeCells, List<int> columnsWidth,
|
||||
List<string> columns, List<string> headers,
|
||||
List<MergeCells> mergeCells, List<ColumnInfo> columns,
|
||||
List<T> data) where T : class, new()
|
||||
{
|
||||
if (string.IsNullOrEmpty(filepath))
|
||||
@ -64,18 +63,10 @@ namespace Components.NonVisualComponents
|
||||
{
|
||||
throw new ArgumentNullException("Не указан заголовок документа!");
|
||||
}
|
||||
if (mergeCells == null || mergeCells.Count == 0 || columnsWidth == null || columnsWidth.Count == 0)
|
||||
if (mergeCells == null || mergeCells.Count == 0 || columns == null || columns.Count == 0)
|
||||
{
|
||||
throw new ArgumentNullException("Не заполнена информация по колонкам!");
|
||||
}
|
||||
if (columns == null || columns.Count == 0 || headers == null || headers.Count == 0 || columns.Count != headers.Count)
|
||||
{
|
||||
throw new ArgumentNullException("Не заполнена информация по заголовкам!");
|
||||
}
|
||||
if (columnsWidth.Count != columns.Count)
|
||||
{
|
||||
throw new Exception("Количество заголовков не соответствует количеству размеров столбцов!");
|
||||
}
|
||||
if (data == null)
|
||||
{
|
||||
throw new ArgumentNullException("Данные не заполнены!");
|
||||
@ -88,17 +79,17 @@ namespace Components.NonVisualComponents
|
||||
worksheet.Cells[1, 1] = title;
|
||||
|
||||
// Заголовки таблицы
|
||||
for (int i = 1; i <= headers.Count; i++)
|
||||
for (int i = 1; i <= columns.Count; i++)
|
||||
{
|
||||
if (string.IsNullOrEmpty(headers[i - 1]))
|
||||
if (string.IsNullOrEmpty(columns[i - 1].Header))
|
||||
{
|
||||
throw new Exception("Заголовок не имеет данных!");
|
||||
}
|
||||
|
||||
worksheet.Cells[2, i] = headers[i - 1];
|
||||
worksheet.Cells[2, i] = columns[i - 1].Header;
|
||||
|
||||
Excel.Range column = (Excel.Range)worksheet.Columns[i];
|
||||
column.ColumnWidth = columnsWidth[i - 1];
|
||||
column.ColumnWidth = columns[i - 1].Width;
|
||||
|
||||
Excel.Range cell = (Excel.Range)worksheet.Cells[2, i];
|
||||
cell.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
|
||||
@ -126,7 +117,7 @@ namespace Components.NonVisualComponents
|
||||
}
|
||||
|
||||
// Объединение ячеек по строкам, которые не объединяются по столбцам
|
||||
for (int i = 1; i <= headers.Count; i++)
|
||||
for (int i = 1; i <= columns.Count; i++)
|
||||
{
|
||||
if (!mergeIndexes.Contains(i - 1))
|
||||
{
|
||||
@ -157,7 +148,7 @@ namespace Components.NonVisualComponents
|
||||
|
||||
foreach (var column in columns)
|
||||
{
|
||||
if (column == property.Name)
|
||||
if (column.FieldName == property.Name)
|
||||
{
|
||||
columnIndex = columns.IndexOf(column) + 1;
|
||||
break;
|
||||
@ -176,7 +167,7 @@ namespace Components.NonVisualComponents
|
||||
// Границы таблицы
|
||||
for (int i = 2; i <= (data.Count() + 3); i++)
|
||||
{
|
||||
for (int j = 1; j <= headers.Count(); j++)
|
||||
for (int j = 1; j <= columns.Count(); j++)
|
||||
{
|
||||
Excel.Range cell = (Excel.Range)worksheet.Cells[i, j];
|
||||
cell.BorderAround(true);
|
||||
|
@ -61,18 +61,18 @@ namespace WinForms
|
||||
new MergeCells("Личные данные", new int[] { 2, 3, 4 }),
|
||||
new MergeCells("Работа", new int[] { 7, 8 })
|
||||
};
|
||||
List<int> columnsWidth = new List<int>()
|
||||
List<ColumnInfo> columns = new List<ColumnInfo>()
|
||||
{
|
||||
10, 10, 20, 20, 20, 20, 20, 30, 30, 10
|
||||
};
|
||||
|
||||
List<string> columns = new List<string>()
|
||||
{
|
||||
"Id", "Status", "Name", "Surname", "Age", "Kids", "Car", "Department", "Post", "Prize"
|
||||
};
|
||||
List<string> headers = new List<string>()
|
||||
{
|
||||
"Идент.", "Статус", "Имя", "Фамилия", "Возраст", "Дети", "Машина", "Подразделение", "Должность", "Премия"
|
||||
new ColumnInfo("Id", "Идент.", 10),
|
||||
new ColumnInfo("Status", "Статус", 10),
|
||||
new ColumnInfo("Name", "Имя", 20),
|
||||
new ColumnInfo("Surname", "Фамилия", 20),
|
||||
new ColumnInfo("Age", "Возраст", 20),
|
||||
new ColumnInfo("Kids", "Дети", 20),
|
||||
new ColumnInfo("Car", "Машина", 20),
|
||||
new ColumnInfo("Department", "Подразделение", 30),
|
||||
new ColumnInfo("Post", "Должность", 30),
|
||||
new ColumnInfo("Prize", "Премия", 10)
|
||||
};
|
||||
|
||||
List<Employee> data = new List<Employee>()
|
||||
@ -85,8 +85,7 @@ namespace WinForms
|
||||
};
|
||||
|
||||
tableComponent1.CreateDocument(filepath, title,
|
||||
mergeCells, columnsWidth,
|
||||
columns, headers,
|
||||
mergeCells, columns,
|
||||
data);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user