#excel #fonts #openxml #openxml-sdk
#excel #шрифты #openxml #openxml-sdk
Вопрос:
Я новичок в Openxml. Я пытаюсь создать файл xlsx с помощью openxml. Я хочу применить разные шрифты и цвета к тексту разных ячеек в файле Excel. Я использую это для создания файла xlsx, но не могу выполнить часть шрифта и цвета.
SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create("E:\Word9.xlsx", SpreadsheetDocumentType.Workbook);
WorkbookPart workbookpart = spreadsheetDocument.AddWorkbookPart();
workbookpart.Workbook = new Workbook();
WorksheetPart worksheetPart = workbookpart.AddNewPart<WorksheetPart>();
worksheetPart.Worksheet = new Worksheet(new SheetData());
Sheets sheets = spreadsheetDocument.WorkbookPart.Workbook.AppendChild<Sheets>(new Sheets());
int i = 1;
while (i <= 5)
{
Sheet sheet = new Sheet() { Id = spreadsheetDocument.WorkbookPart.GetIdOfPart(worksheetPart), SheetId = (UInt32)i, Name = "mySheet" i.ToString() };
for (int ii = 1; ii <= 5; ii )
{
Row row1 = new Row();
sheets.AppendChild(row1);
Cell cll = new Cell(new InlineString(new DocumentFormat.OpenXml.Spreadsheet.Text("qqqqqq"))) { DataType = CellValues.InlineString };
row1.AppendChild(cll);
}
sheets.Append(sheet);
i ;
}
workbookpart.Workbook.Save();
Есть ли кто-нибудь, кто знает, как применить шрифт и цвет к разным ячейкам?
Ответ №1:
Как уже сказал Эдвард, вам нужно создать объект таблицы стилей.
var stylesheet = new Stylesheet() { MCAttributes = new MarkupCompatibilityAttributes() {Ignorable = "x14ac"}};
stylesheet.AddNamespaceDeclaration("mc", "http: //schemas.openxmlformats.org/markup-compatibility/2006");
stylesheet.AddNamespaceDeclaration("x14ac", "http: //schemas.microsoft.com/office/spreadsheetml/2009/9/ac");
Объект таблицы стилей должен содержать все шрифты, заливки, форматы ячеек и т.д., Которые вы хотите использовать.
// create collections for fonts, fills, cellFormats, ...
var fonts = new Fonts() { Count = 1U, KnownFonts = true };
var fills = new Fills() {Count = 5U};
var cellFormats = new CellFormats() { Count = 4U };
// create a font: bold, red, calibr
Font font = new Font();
font.Append(new FontSize() {Val = 11D});
font.Append(new Color() { Rgb = "ff0000"});
font.Append(new FontName() {Val = "Calibri"});
font.Append(new FontFamilyNumbering() {Val = 2});
font.Append(new FontScheme() {Val = FontSchemeValues.Minor});
font.Append(new Bold());
// add the created font to the fonts collection
// since this is the first added font it will gain the id 1U
fonts.Append(font);
// create a background: green
Fill fill = new Fill();
var patternFill = new PatternFill() {PatternType = PatternValues.Solid};
patternFill.Append(new ForegroundColor() {Rgb = "00ff00"});
patternFill.Append(new BackgroundColor() {Indexed = 64U});
fill.Append(patternFill);
fills.Append(fill);
// create a cell format (combining font and background)
// the first added font/fill/... has the id 0. The second 1,...
cellFormats.AppendChild(new CellFormat(){ FontId = 0U, FillId = 0U });
// add the new collections to the stylesheet
stylesheet.Append(fonts);
stylesheet.Append(fills);
stylesheet.Append(cellFormats);
Назначьте таблицу стилей вашему объекту workbookpart
var stylePart = workbookpart.AddNewPart<WorkbookStylesPart>();
stylePart.Stylesheet = stylesheet;
stylePart.Stylesheet.Save();
После этого вы сможете присвоить ячейке идентификатор CellStyleId.
var cell = new Cell() {
CellValue = new CellValue("your cooler string"),
DataType = new EnumValue<CellValues>(CellValues.String),
StyleIndex = 0U // index in the cellFormats array
};
назначение шрифтов, заливок, границ и т. Д. для объектов, подобных CellFormats
Каждый Font
, Fill
, Border
, … может быть назначен другим объектам по их индексу в соответствующей коллекции. Например, первый добавленный шрифт к объекту fonts будет иметь индекс 1U
.
Эти индексы представлены в виде целых чисел без знака (отрицательных значений больше положительных значений). Суффикс ‘U’ обозначает либо uint, либо ulong.
Ссылки
Ответ №2:
Вам необходимо создать и использовать таблицу стилей. Вот хорошая ссылка, но есть и другие, если вы ищете при создании таблицы стилей. Стилизация ваших листов Excel
Комментарии:
1. ссылка мертва:-(
2. Да, Крис Куон покинул Microsoft в 2014 году, и недавно они закрыли его блог.