Используя open XML, как отформатировать столбец заголовка жирным шрифтом в листе excel?
С помощью большого количества ссылок в Интернете я могу создать метод, который экспортирует набор данных в файл excel, создавая несколько вкладок для каждой таблицы в наборе данных.
это мой код:
общественная статический недействительным ExportDataSet(набора данных набор данных, строка excelFilePath)
{
пробовать
{
использование(var workbook = SpreadsheetDocument.Create (excelFilePath, DocumentFormat.функция OPENXML.SpreadsheetDocumentType.Рабочая тетрадь))
{
var workbookPart = рабочая книга.AddWorkbookPart();
рабочая тетрадь.WorkbookPart.Книги = новых имен documentformat.функция OPENXML.Сводная таблица.Рабочая тетрадь();
рабочая тетрадь.WorkbookPart.Рабочая тетрадь.Листы = новый Документформат.функция OPENXML.Сводная таблица.Простыни();
(по каждому элементу системы.Данных.Объект DataTable таблица в наборе данных.Таблицы)
{
var sheetPart = рабочая книга.WorkbookPart. AddNewPart & lt;worksheetpart>();
var sheetData = новый Документформат.функция OPENXML.Сводная таблица.SheetData();
sheetPart.Лист = новых имен documentformat.функция OPENXML.Сводная таблица.Рабочий лист(sheetData);
Имен documentformat.функция OPENXML.Сводная таблица.Листы листы = рабочая тетрадь.WorkbookPart.Рабочая тетрадь.GetFirstChild&ЛТ;имен documentformat.функция OpenXML.работы с электронными таблицами.листы>();
string relationshipId = рабочая книга.WorkbookPart.GetIdOfPart(sheetPart);
uint sheetId = 1;
если (листы.Элементы в<имен documentformat.функция OpenXML.работы с электронными таблицами.лист> (). Count () > 0)
{
sheetId =
простыни.Элементы в<имен documentformat.функция OpenXML.работы с электронными таблицами.лист и GT;().Выберите(х => У С. SheetId.Значения).Макс() + 1;
}
Имен documentformat.функция OPENXML.Сводная таблица.Лист оцинкованный = новых имен documentformat.функция OPENXML.Сводная таблица.Sheet () { Id = relationshipId, SheetId = sheetId, Name = таблица.Имятаблицы };
простыни.Добавить (лист);
Имен documentformat.функция OPENXML.Сводная таблица.Строку заголовка, строку = новых имен documentformat.функция OPENXML.Электронная Таблица. Строка();
List & lt;string & gt; columns = новый список & lt;string>();
если (табл. строк.Количество = = 0)
{
Имен documentformat.функция OPENXML.Сводная таблица.Клетка Клетка-новых имен documentformat.функция OPENXML.Сводная таблица.Клетка();
ячейка.DataType = DocumentFormat.функция OPENXML.Сводная таблица.Значения ячеек.Строка;
ячейка.CellValue = новый Документформат.функция OPENXML.Сводная таблица.CellValue ("**ничего на сегодня **");
строку заголовка.AppendChild(ячейка);
листовые данные.Метода appendChild(строку заголовка);
}
ещё
{
foreach (System.Data.DataColumn столбец в таблице.Столбцы)
{
столбцы.Добавить (столбец.Имя_столбца);
Имен documentformat.функция OPENXML.Сводная таблица.Клетка Клетка-новых имен documentformat.функция OPENXML.Сводная таблица.Клетка();
ячейка.DataType = DocumentFormat.функция OPENXML.Сводная таблица.Значения ячеек.Строка;
ячейка.CellValue = новый Документформат.функция OPENXML.Сводная таблица.CellValue (столбец.Имя_столбца);
строку заголовка.AppendChild(ячейка);
}
листовые данные.Метода appendChild(строку заголовка);
(по каждому элементу системы.Данных.Dsrow datarow в таблице.Строки)
{
Имен documentformat.функция OPENXML.Сводная таблица.Невров строки = новый имен documentformat.функция OPENXML.Электронная Таблица. Строка();
по каждому элементу(строка, столбец в Столбцах)
{
Имен documentformat.функция OPENXML.Сводная таблица.Клетка Клетка-новых имен documentformat.функция OPENXML.Сводная таблица.Клетка();
ячейка.DataType = DocumentFormat.функция OPENXML.Сводная таблица.Значения ячеек.Строка;
ячейка.CellValue = новый Документформат.функция OPENXML.Сводная таблица.CellValue(dsrow[col].Метод toString()); //
невров.AppendChild(ячейка);
}
листовые данные.Метода appendChild(невров);
}
}
}
}
}
catch (исключение)
{
бросать;
}
}
Теперь мне нужно установить заголовок жирным шрифтом. Как мне это сделать?
Что я уже пробовал:
Я обнаружил этот метод, который выбрасывает исключение null reference. Что мне нужно сделать, чтобы изменить этот метод, глядя на мой приведенный выше код. Я был бы благодарен, если бы кто-нибудь мог мне помочь.
public static void SetSpreadsheetHeaderBold(string excelFilePath) { using(SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(excelFilePath, true)) { WorkbookPart workbookPart = spreadsheetDocument.WorkbookPart; WorksheetPart worksheetPart = workbookPart.WorksheetParts.First(); SheetData sheetData = worksheetPart.Worksheet.Elements<SheetData>().First(); WorkbookStylesPart stylesPart = spreadsheetDocument.WorkbookPart.WorkbookStylesPart; DocumentFormat.OpenXml.Spreadsheet.Font font1 = new DocumentFormat.OpenXml.Spreadsheet.Font( new Bold(), new FontSize() { Val = 11 }, new Color() { Rgb = new HexBinaryValue() { Value = "000000" } }, new FontName() { Val = "Calibri" }); stylesPart.Stylesheet.Fonts.Append(font1); stylesPart.Stylesheet.Save(); UInt32Value fontId = Convert.ToUInt32(stylesPart.Stylesheet.Fonts.ChildElements.Count - 1); CellFormat cf = new CellFormat() { FontId = fontId, FillId = 0, BorderId = 0, ApplyFont = true }; stylesPart.Stylesheet.CellFormats.Append(cf); Row r = sheetData.Elements<Row>().First<Row>(); int index1 = stylesPart.Stylesheet.CellFormats.ChildElements.Count - 1; foreach(Cell c in r.Elements<Cell>()) { c.StyleIndex = Convert.ToUInt32(index1); worksheetPart.Worksheet.Save(); } spreadsheetDocument.Close(); } }