如何使用openxml对Excel文件单元格中的文本应用字体和颜色

如何使用openxml对Excel文件单元格中的文本应用字体和颜色,excel,fonts,openxml,openxml-sdk,Excel,Fonts,Openxml,Openxml Sdk,我是Openxml新手。我正在尝试使用openxml创建一个xlsx文件。我想对excel文件中不同单元格的文本应用不同的字体和颜色。我用它来创建一个xlsx文件,但不能做字体和颜色部分 SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create("E:\\Word9.xlsx", SpreadsheetDocumentType.Workbook); WorkbookPart workbookpart

我是Openxml新手。我正在尝试使用openxml创建一个xlsx文件。我想对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();
SpreadsheetDocument SpreadsheetDocument=SpreadsheetDocument.Create(“E:\\Word9.xlsx”,SpreadsheetDocumentType.工作簿);
WorkbookPart WorkbookPart=电子表格文档.AddWorkbookPart();
workbookpart.工作簿=新工作簿();
WorksheetPart WorksheetPart=workbookpart.AddNewPart();
worksheetPart.Worksheet=新工作表(new SheetData());
Sheets Sheets=spreadsheetDocument.WorkbookPart.Workbook.AppendChild(新工作表());
int i=1;

while(i你需要创建和使用一个样式表。这里是一个很好的参考,但是如果你搜索创建一个样式表,会有更多的参考。

就像Edward已经说过的那样,您需要创建一个样式表对象

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”);
样式表对象必须包含您想要使用的所有字体、填充、单元格格式等

//创建字体、填充、单元格格式等的集合。。。
var-fonts=new-fonts(){Count=1U,KnownFonts=true};
var fills=new fills(){Count=5U};
var cellFormats=new cellFormats(){Count=4U};
//创建字体:粗体、红色、calibr
Font Font=新字体();
追加(新的FontSize(){Val=11D});
追加(新颜色(){Rgb=“ff0000”});
追加(新的FontName(){Val=“Calibri”});
追加(新的FontFamilyNumber(){Val=2});
追加(新的FontScheme(){Val=FontSchemeValues.Minor});
font.Append(新粗体());
//将创建的字体添加到字体集合
//由于这是第一个添加的字体,因此它将获得id 1U
字体。追加(字体);
//创建背景:绿色
填充=新填充();
var patternFill=new patternFill(){PatternType=PatternValues.Solid};
patternFill.Append(newforegroundcolor(){Rgb=“00ff00”});
Append(newbackgroundcolor(){index=64U});
填充。追加(填充图案);
填充。追加(填充);
//创建单元格格式(结合字体和背景)
//第一个添加的font/fill/…的id为0。第二个为1,。。。
AppendChild(新的CellFormat(){FontId=0U,FillId=0U});
//将新集合添加到样式表中
样式表。追加(字体);
样式表。追加(填充);
追加(单元格格式);
将样式表指定给workbookpart对象

var stylePart=workbookpart.AddNewPart();
stylePart.Stylesheet=样式表;
stylePart.Stylesheet.Save();
之后,您可以将CellStyleId分配给单元格

var cell=new cell(){
CellValue=新的CellValue(“您的冷却器字符串”),
数据类型=新的枚举值(CellValues.String),
StyleIndex=0U//单元格格式数组中的索引
};

为CellFormats等对象指定字体、填充、边框等 每个
字体
填充
边框
,…都可以通过其在相应集合中的索引分配给其他对象。例如,第一个添加到字体对象的字体将具有索引
1U

这些索引表示为无符号整数(无负值,多为正值)。U后缀表示uint或ulong


链接

link已经死了:-(是的,2014年离开了微软,最近他们删除了他的博客。