Финал 2 лаба
This commit is contained in:
parent
cbc230e0a2
commit
b9e819f309
@ -103,9 +103,12 @@ namespace ExexForm2
|
|||||||
new Person { FirstName = "Jane", LastName = "Smith", Age = 25 }
|
new Person { FirstName = "Jane", LastName = "Smith", Age = 25 }
|
||||||
};
|
};
|
||||||
|
|
||||||
var headers = new List<string> { "First Name", "Last Name", "Age" };
|
|
||||||
var commonHeaders = new List<string> { "Name", "", "" };
|
var commonHeaders = new List<string> { "Name", "", "" };
|
||||||
var propertyNames = new List<string> { "FirstName", "LastName", "Age" };
|
var headersNames = new List<(string, string)> {
|
||||||
|
("First Name","FirstName"),
|
||||||
|
("Last Name", "LastName"),
|
||||||
|
("Age", "Age")
|
||||||
|
};
|
||||||
var rowHeights = new List<double> { 20, 20 };
|
var rowHeights = new List<double> { 20, 20 };
|
||||||
var mergeCells = new List<(int startRow, int endRow, int startColumn, int endColumn)>
|
var mergeCells = new List<(int startRow, int endRow, int startColumn, int endColumn)>
|
||||||
{
|
{
|
||||||
@ -113,7 +116,7 @@ namespace ExexForm2
|
|||||||
(2, 2, 0, 1)
|
(2, 2, 0, 1)
|
||||||
};
|
};
|
||||||
|
|
||||||
generator.GeneratePdf(fileName, "Example Document", mergeCells, rowHeights, headers, commonHeaders, propertyNames, data1);
|
generator.GeneratePdf(fileName, "Example Document", mergeCells, rowHeights, headersNames, commonHeaders, data1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,25 +17,17 @@ namespace Library14Petrushin
|
|||||||
string documentTitle,
|
string documentTitle,
|
||||||
List<(int startRow, int endRow, int startColumn, int endColumn)> mergeCells,
|
List<(int startRow, int endRow, int startColumn, int endColumn)> mergeCells,
|
||||||
List<double> rowHeights,
|
List<double> rowHeights,
|
||||||
List<string> headers,
|
List<(string, string)> headersNames,
|
||||||
List<string> commonHeaders,
|
List<string> commonHeaders,
|
||||||
List<string> propertyNames,
|
|
||||||
List<T> data)
|
List<T> data)
|
||||||
{
|
{
|
||||||
// Проверка на заполненность входных данных
|
// Проверка на заполненность входных данных
|
||||||
if (string.IsNullOrEmpty(fileName) || string.IsNullOrEmpty(documentTitle) ||
|
if (string.IsNullOrEmpty(fileName) || string.IsNullOrEmpty(documentTitle) ||
|
||||||
mergeCells == null || rowHeights == null || headers == null ||
|
mergeCells == null || rowHeights == null || headersNames == null || data == null)
|
||||||
propertyNames == null || data == null)
|
|
||||||
{
|
{
|
||||||
throw new ArgumentException("Все входные данные должны быть заполнены.");
|
throw new ArgumentException("Все входные данные должны быть заполнены.");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Проверка на соответствие количества заголовков и свойств
|
|
||||||
if (headers.Count != propertyNames.Count)
|
|
||||||
{
|
|
||||||
throw new ArgumentException("Количество заголовков должно совпадать с количеством свойств.");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Проверка на соответствие количества строк и высот строк
|
// Проверка на соответствие количества строк и высот строк
|
||||||
if (rowHeights.Count != data.Count)
|
if (rowHeights.Count != data.Count)
|
||||||
{
|
{
|
||||||
@ -56,7 +48,7 @@ namespace Library14Petrushin
|
|||||||
double x = margin;
|
double x = margin;
|
||||||
double y = 70;
|
double y = 70;
|
||||||
double rowHeight = 20; // Фиксированная высота строки
|
double rowHeight = 20; // Фиксированная высота строки
|
||||||
double columnWidth = (page.Width - 2 * margin) / (headers.Count + 1); // Ширина столбца
|
double columnWidth = (page.Width - 2 * margin) / (headersNames.Count + 1); // Ширина столбца
|
||||||
|
|
||||||
// Отрисовка шапки
|
// Отрисовка шапки
|
||||||
|
|
||||||
@ -68,9 +60,9 @@ namespace Library14Petrushin
|
|||||||
|
|
||||||
x += columnWidth;
|
x += columnWidth;
|
||||||
|
|
||||||
for (int col = 0; col < headers.Count; col++)
|
for (int col = 0; col < headersNames.Count; col++)
|
||||||
{
|
{
|
||||||
gfx.DrawString(headers[col], font, XBrushes.Black, new XRect(x, y + col * rowHeight, columnWidth, rowHeight), XStringFormats.CenterLeft);
|
gfx.DrawString(headersNames[col].Item1, font, XBrushes.Black, new XRect(x, y + col * rowHeight, columnWidth, rowHeight), XStringFormats.CenterLeft);
|
||||||
gfx.DrawRectangle(XPens.Black, new XRect(x, y + col * rowHeight, columnWidth, rowHeight)); // Добавляем рамку
|
gfx.DrawRectangle(XPens.Black, new XRect(x, y + col * rowHeight, columnWidth, rowHeight)); // Добавляем рамку
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -79,10 +71,10 @@ namespace Library14Petrushin
|
|||||||
// Отрисовка данных
|
// Отрисовка данных
|
||||||
for (int col = 0; col < data.Count; col++)
|
for (int col = 0; col < data.Count; col++)
|
||||||
{
|
{
|
||||||
for (int row = 0; row < propertyNames.Count; row++)
|
for (int row = 0; row < headersNames.Count; row++)
|
||||||
{
|
{
|
||||||
var item = data[col];
|
var item = data[col];
|
||||||
var property = item.GetType().GetProperty(propertyNames[row]);
|
var property = item.GetType().GetProperty(headersNames[row].Item2);
|
||||||
if (property != null)
|
if (property != null)
|
||||||
{
|
{
|
||||||
var value = property.GetValue(item)?.ToString() ?? string.Empty;
|
var value = property.GetValue(item)?.ToString() ?? string.Empty;
|
||||||
@ -107,7 +99,7 @@ namespace Library14Petrushin
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gfx.DrawString(headers[startRow], font, XBrushes.Black, new XRect(mergeX, mergeY, mergeWidth, mergeHeight), XStringFormats.Center);
|
gfx.DrawString(headersNames[startRow].Item1, font, XBrushes.Black, new XRect(mergeX, mergeY, mergeWidth, mergeHeight), XStringFormats.Center);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user