Я новичок в Open Xml и пытаюсь создать файл Excel с настраиваемой шириной столбца. Я искал решение онлайн и здесь, но каждое решение выдает одну и ту же ошибку. Я пробовал это:
private byte[] GenerateExcelFromTreeData(TreeData[] treeData)
{
using (var ms = new MemoryStream())
using (var spreadsheetDocument = SpreadsheetDocument.Create(ms, SpreadsheetDocumentType.Workbook))
{
WorkbookPart workbookpart = spreadsheetDocument.AddWorkbookPart();
workbookpart.Workbook = new Workbook();
WorksheetPart worksheetPart = workbookpart.AddNewPart<WorksheetPart>();
var sheetData = new SheetData();
worksheetPart.Worksheet = new Worksheet(sheetData);
Sheets sheets = workbookpart.Workbook.AppendChild(new Sheets());
Sheet sheet = new Sheet()
{
Id = workbookpart.GetIdOfPart(worksheetPart),
SheetId = 1,
Name = "sheet"
};
Columns columns = new Columns();
columns.Append(new Column() { Min = 1, Max = 1, Width = 120, CustomWidth = true });
columns.Append(new Column() { Min = 2, Max = 50, Width = 50, CustomWidth = true });
worksheetPart.Worksheet.Append(columns);
Row headerRow = new Row();
headerRow.Append(new Cell()
{
CellValue = new CellValue("Node"),
DataType = CellValues.String
});
headerRow.Append(new Cell()
{
CellValue = new CellValue("Value"),
DataType = CellValues.String
});
headerRow.Append(new Cell()
{
CellValue = new CellValue("Delta"),
DataType = CellValues.String
});
headerRow.Append(new Cell()
{
CellValue = new CellValue("∆ Avegage Premium " + treeData[0].delta_AP + " %"),
DataType = CellValues.String
});
headerRow.Append(new Cell()
{
CellValue = new CellValue("∆ New Policies " + treeData[0].delta_NP + " %"),
DataType = CellValues.String
});
headerRow.Append(new Cell()
{
CellValue = new CellValue("∆ Average Sum Insurance " + treeData[0].delta_AS + " %"),
DataType = CellValues.String
});
sheetData.Append(headerRow);
//foreach (var data in treeData)
for(int i = 1; i < treeData.Count(); i++)
{
var data = treeData[i];
Row row = new Row();
row.Append(new Cell()
{
CellValue = new CellValue(data.name),
DataType = CellValues.String
});
row.Append(new Cell()
{
CellValue = new CellValue(data.description.ToString()),
DataType = CellValues.Number
});
row.Append(new Cell()
{
CellValue = new CellValue(data.delta.ToString()),
DataType = CellValues.Number
});
row.Append(new Cell()
{
CellValue = new CellValue(data.delta_AP.ToString()),
DataType = CellValues.Number
});
row.Append(new Cell()
{
CellValue = new CellValue(data.delta_NP.ToString()),
DataType = CellValues.Number
});
row.Append(new Cell()
{
CellValue = new CellValue(data.delta_AS.ToString()),
DataType = CellValues.Number
});
sheetData.Append(row);
}
sheets.Append(sheet);
workbookpart.Workbook.Save();
spreadsheetDocument.Close();
ms.Position = 0;
return ms.ToArray();
}
}
, но я получаю поврежденный файл, но если вы удалите:
Columns columns = new Columns();
columns.Append(new Column() { Min = 1, Max = 1, Width = 120, CustomWidth = true });
columns.Append(new Column() { Min = 2, Max = 50, Width = 50, CustomWidth = true });
worksheetPart.Worksheet.Append(columns);
, он работает нормально, но с шириной по умолчанию. Я также хотел бы сделать ряд заголовка смелее. Какие-нибудь советы?