gpt4 book ai didi

c# - 使用 OpenXmlWriter SAX 创建带有样式标签的 Excel 文件

转载 作者:行者123 更新时间:2023-11-30 19:16:05 35 4
gpt4 key购买 nike

我正在尝试使用 OpenXmlWriter (SAX) 编写带有样式的 Excel Xlsx 电子表格。

我能够创建包含行和列的文件(将它们填充为字符串)。我正在寻找有关如何使用粗体制作第一行(标题)的简单代码。

我没有模板文件开始,因为该文件是动态的。

我找到了几篇关于如何添加 WorkbookStylesPart 的文章,但他们都是使用 DOM。因为我需要写大量的行,所以 DOM 对我不起作用。

谁能指出我正确的方向?使用 WriteStartElement 和 OpenXmlAttribute 时将标题行添加为粗体的简单代码。

谢谢,奥丹斯基

最佳答案

添加样式表是一次性的工作。之后,您只需要在创建新单元格时简单地引用定义的样式 ID。

热向电子表格添加样式表[使用粗体文本样式]

private WorkbookStylesPart AddStyleSheet(SpreadsheetDocument spreadsheet)
{
WorkbookStylesPart stylesheet = spreadsheet.WorkbookPart.AddNewPart<WorkbookStylesPart>();

Stylesheet workbookstylesheet = new Stylesheet();

Font font0 = new Font(); // Default font

Font font1 = new Font(); // Bold font
Bold bold = new Bold();
font1.Append(bold);

Fonts fonts = new Fonts(); // <APENDING Fonts>
fonts.Append(font0);
fonts.Append(font1);

// <Fills>
Fill fill0 = new Fill(); // Default fill

Fills fills = new Fills(); // <APENDING Fills>
fills.Append(fill0);

// <Borders>
Border border0 = new Border(); // Defualt border

Borders borders = new Borders(); // <APENDING Borders>
borders.Append(border0);

// <CellFormats>
CellFormat cellformat0 = new CellFormat() { FontId = 0, FillId = 0, BorderId = 0 }; // Default style : Mandatory | Style ID =0

CellFormat cellformat1 = new CellFormat() { FontId = 1 }; // Style with Bold text ; Style ID = 1


// <APENDING CellFormats>
CellFormats cellformats = new CellFormats();
cellformats.Append(cellformat0);
cellformats.Append(cellformat1);


// Append FONTS, FILLS , BORDERS & CellFormats to stylesheet <Preserve the ORDER>
workbookstylesheet.Append(fonts);
workbookstylesheet.Append(fills);
workbookstylesheet.Append(borders);
workbookstylesheet.Append(cellformats);

// Finalize
stylesheet.Stylesheet = workbookstylesheet;
stylesheet.Stylesheet.Save();

return stylesheet;
}

现在,当您创建一个单元格时,请执行以下操作以引用粗体文本

Cell c1 = new Cell(){StyleIndex = Convert.ToUInt32(1)}; // Assign our defined style with Bold text ; Style ID 1

补充说明:您需要在添加电子表格的工作簿部分后添加样式表。

有关 SAX 方法的更多信息:您可以在首次创建要打开以插入数据单元格的模板文件时定义样式。并且在添加数据单元格时使用 ID 引用定义的样式。

具有样式 ( MSDN ) 的简单工作电子表格

public static void CreateSpreadsheetWorkbook(string filepath)
{
// Create a spreadsheet document by supplying the filepath.
// By default, AutoSave = true, Editable = true, and Type = xlsx.
SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(filepath, SpreadsheetDocumentType.Workbook);

// Add a WorkbookPart to the document.
WorkbookPart workbookpart = spreadsheetDocument.AddWorkbookPart();
workbookpart.Workbook = new Workbook();

AddStyleSheet(spreadsheetDocument) // <== Adding stylesheet using above function

// Add a WorksheetPart to the WorkbookPart.
WorksheetPart worksheetPart = workbookpart.AddNewPart<WorksheetPart>();
worksheetPart.Worksheet = new Worksheet(new SheetData());

// Add Sheets to the Workbook.
Sheets sheets = spreadsheetDocument.WorkbookPart.Workbook.AppendChild<Sheets>(new Sheets());

// Append a new worksheet and associate it with the workbook.
Sheet sheet = new Sheet() { Id = spreadsheetDocument.WorkbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name = "mySheet" };
sheets.Append(sheet);

workbookpart.Workbook.Save();

// Close the document.
spreadsheetDocument.Close();
}

关于c# - 使用 OpenXmlWriter SAX 创建带有样式标签的 Excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28560455/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com