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

2023-11-30

我是 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();

有谁知道如何将字体和颜色应用于不同的单元格吗?


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

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);

将样式表分配给您的工作簿部分对象

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 等对象分配字体、填充、边框等

Each Font, Fill, Border, ... 可以通过相应集合中的索引分配给其他对象。例如,第一个添加到字体对象的字体将具有索引1U.

这些索引表示为无符号整数(没有负值大于正值)。 “U”后缀表示 uint 或 ulong。


links

OpenXml 文档, 无符号整数

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 openxml 在 Excel 文件单元格中的文本上应用字体和颜色 的相关文章

随机推荐

  • 将变量从 Main 函数传递到另一个 C# 类

    我正在用我的头撞墙 我想重复使用 C 控制台应用程序内的几个变量 但是 我一生都不能在另一个类中重复使用这些变量 我希望您能提供任何帮助或指示 我已经搜索了很长一段时间 但我完全被难住了 编辑 是的 变量位于我的 Main 函数内 抱歉忽略
  • GetFields 返回空数组

    有人能看到我在下面做错了什么吗 该类型具有服务方法尝试访问的公共属性 那么为什么反射没有获取它呢 Public class SomeClass private YetAnotherClass yetAnotherClass public S
  • 导入包含“导入”命令的模块有什么好处或坏处?

    如果我要创建一个名为的模块 例如imp mod py里面包含了我经常使用的所有 主观使用的 相关模块 将此模块导入到我的主程序中是否允许我访问其中包含的导入imp mod py 如果是的话 这会带来什么缺点 我想一个主要优点是减少导入时间
  • 如何设置PyQt5 QIntValidator的顶部和底部?

    我有一个像下面的代码一样的行编辑 在 3 个不同的代码中我有 2 个不同的问题 self rnr id num le QLineEdit self rnr id num le setValidator QIntValidator 99999
  • “auto int i”有效 C++11 吗?

    在回答中这个问题问题是传统的C关键字的含义auto 自动的 而不是static or extern存储 仍然有效C 11现在它意味着类型推导 我记得旧的意思是auto应该保留相关的内容 但其他人不同意 auto char c 42 eith
  • Gson忽略序列化排除策略

    序列化 public class Subclass extends Superclass private static final long serialVersionUID 1L private int someProperty publ
  • excel VBA如何在IE11上点击div的onclick事件

    我已经搜索了又搜索但没有找到任何解决方案来解决这个问题 如何触发 div 内的 onclick 事件 我通过使用标题和 getattribute 测试它 一切都正确 但它就是无法点击 IE document getElementById b
  • SQLite:防止重复

    我想创建一个表来存储设备设置 该表包含三行 id parameter name 和parameter value 该表是通过执行以下查询语句创建的 DATABASE CREATE create table DATABASE TABLE KE
  • 使用Java读取图像文件的有效方法

    我在用javax imageio ImageIO read 读取位于 Windows 临时位置的大小为 5 mb 的图像几乎需要 9 秒 PFB 是 Jprofiler 的屏幕截图 我想要一种更有效的方法 可以将时间减少到至少 2 3 秒
  • iPhone上收到通知时(不是点击打开通知后)会触发哪个方法?

    我现在正在使用didReceiveRemoteNotification然而 要获取从 Parse 推送的通知的有效负载 它仅在点击并打开通知时触发 我想做的是启动警报来提醒用户通知已到达 所以我想didReceiveRemoteNotifi
  • 如何在Python中的一行中追加多个项目

    I have count 0 i 0 while count lt len mylist if mylist i 1 mylist i 13 and mylist i 2 mylist i 14 print mylist i 1 mylis
  • Xcode 界面生成器中的图像资源大小

    如果我在 Xcode 中的界面构建器上添加图像视图 并且其大小为 200 x 100 Xcode 中的大小 我如何知道将图像资源设置为 1x 2x 和 3x 的大小 如果我在 3x 的 Photoshop 中将其设置为 600x300 像素
  • 在使用 Ajax 生成的表单上使用 jquery 验证插件

    使用 jQuery 验证插件时 如何验证使用 ajax 生成的表单 我的意思是问 当页面加载时 表单最初不会出现在页面上 而是使用ajax添加到页面中 我正在关注以下示例bassistance de jquery plugins jquer
  • iOS编辑tableview隐藏单元格中的子视图

    我有一个关于编辑 UITableView 的问题 我想知道当点击删除控件并出现删除按钮时如何隐藏子视图 我已经弄清楚如何在点击删除按钮时隐藏子视图 但为时已晚 我使用以下代码来完成该任务 void tableView UITableView
  • 如何使用 jOOQ 从模板生成带有参数顺序的 SQL?

    我使用 jOOQ 3 11 11 生成这样的 SQL 模板 DSLContext context new DefaultDSLContext conf Query query context select from table1 where
  • 在服务器上调用 Collection.insert 时,“Meteor 代码必须始终在 Fiber 内运行”

    我在 server statusboard js 中有以下代码 var require meteor bootstrap require request require request function getServices servic
  • 使用 Quarkus Rest Data Panache 时如何从 @PrePersist 中的请求标头访问用户名

    我正在尝试记录修改实体的用户 反向代理正在请求标头中设置用户名 当使用 REST Panache 公开 JAX RS CRUD 时 如何从独立类读取请求和标头 下面是我尝试过的示例 但我得到了 null 或 null 指针 exep pac
  • 为什么正则表达式中的转义字符不匹配?

    如果我想匹配点符号 我必须写这个正则表达式 需要转义字符来匹配符号本身 如果我想匹配 d 符号 我必须写这个 d 转义字符是not需要匹配符号本身 如果我想匹配任何字符 或任何数字字符 d 反之亦然 在我看来 这种做法不太一致 其背后的理由
  • 未找到类型

    我刚刚更新了 angular cli v1 1 并使用创建了一个新项目ng new MyProj 然后我添加并安装了两个依赖项项目 json file dependencies toastr 2 1 2 spin 0 0 1 devDepe
  • 如何使用 openxml 在 Excel 文件单元格中的文本上应用字体和颜色

    我是 Openxml 新手 我正在尝试使用 openxml 创建 xlsx 文件 我想对Excel文件中不同单元格的文本应用不同的字体和颜色 我使用它来创建 xlsx 文件 但无法执行字体和颜色部分 SpreadsheetDocument