s23user Ответов: 1

Используя 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();

           }
       }

1 Ответов

Рейтинг:
2

Salman622

Перейдите по ссылке ниже. Надеюсь, это вам поможет

Строка заголовка выделена жирным шрифтом в excel


s23user

Это не сработало.