在openxml中向Excel添加样式

2024-04-27

我想在打开的 Excel 文档中设置文本的前景色以写入文本。

为此我尝试过:

var stylesheet1 = spreadSheet.WorkbookPart.WorkbookStylesPart.Stylesheet;

                Fills fills1 = new Fills() { Count = (UInt32Value)5U };

                Fill fill5 = new Fill();
                PatternFill patternFill5 = new PatternFill() { PatternType = PatternValues.Solid };
                ForegroundColor foregroundColor3 = new ForegroundColor() { Rgb = "#FF0000" };
                patternFill5.Append(foregroundColor3);

                fill5.Append(patternFill5);

                fills1.Append(fill5);

                stylesheet1.Fills.Append(fills1);
                var fid = stylesheet1.Fills.Count++;         

                wbsp.Stylesheet = stylesheet1;

                Row excelRow;
                excelRow = new Row();
                excelRow.RowIndex = 0;

                Cell cell = new Cell()
                {
                    //create the cell reference of format A1, B2 etc
                    //CellReference = Convert.ToString(Convert.ToChar(65)),
                    CellReference = "A1",
                    DataType = CellValues.String
                };


                CellValue cellValue = new CellValue();

                cellValue.Text = "*";
                //add the value to the cell
                cell.Append(cellValue);

                CellFormat cellFormat = null;
                if (cell.StyleIndex.HasValue)
                {
                    var originalCellFormat = spreadSheet.WorkbookPart.WorkbookStylesPart.Stylesheet.CellFormats.ToList()[(int)cell.StyleIndex.Value] as CellFormat;
                    //copy the original cellformat data to the new cellformat
                    if (originalCellFormat != null)
                    {
                        cellFormat = new CellFormat(originalCellFormat.OuterXml);
                    }
                    else
                    {
                        cellFormat = new CellFormat();
                    }
                }
                else
                {
                    cellFormat = new CellFormat();
                }
                cellFormat.FillId = (UInt32)fid;
                stylesheet1.CellFormats.Append(cellFormat);
                var theStyleIndex = stylesheet1.CellFormats.Count++;
                cell.StyleIndex = new UInt32Value { Value = (UInt32)theStyleIndex };
                spreadSheet.WorkbookPart.WorkbookStylesPart.Stylesheet.Save();

但它在第一行给了我错误:

var stylesheet1 = spreadSheet.WorkbookPart.WorkbookStylesPart.Stylesheet;

Error:

对象未设置为对象的实例。

当我在代码上添加手表时:

spreadSheet.WorkbookPart.WorkbookStylesPart.Stylesheet;

我发现 :spreadSheet.WorkbookPart.WorkbookStylesPart is null

请帮助我如何向单元格添加前景色


也许 SpreadsheetDocument 的初始化丢失了?

using (SpreadsheetDocument document = SpreadsheetDocument.Create(filePath + ".xlsx", SpreadsheetDocumentType.Workbook))
{
    WorkbookPart workbookPart = document.AddWorkbookPart();
    workbookPart.Workbook = new Workbook();

    WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>();
    worksheetPart.Worksheet = new Worksheet();

    WorkbookStylesPart workStylePart = workbookPart.AddNewPart<WorkbookStylesPart>();
    workStylePart.Stylesheet = new Stylesheet();
    var stylesheet1 = document.WorkbookPart.WorkbookStylesPart.Stylesheet;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在openxml中向Excel添加样式 的相关文章

  • 无法从 Web api POST 读取正文数据

    我正在尝试从新的 Asp Net Web Api 中的请求中提取一些数据 我有一个像这样的处理程序设置 public class MyTestHandler DelegatingHandler protected override Syst
  • 从 future 中检索值时的 SIGABRT

    我在使用 C 11 future 时遇到问题 当我打电话时wait or get 关于返回的未来std async 程序接收从mutex标头 可能是什么问题呢 如何修复它 我在 Linux 上使用 g 4 6 将以下代码粘贴到 ideone
  • 如何在编译C代码时禁用警告?

    我正在使用 32 位 Fedora 14 系统 我正在使用编译我的源代码gcc 有谁知道如何在编译c代码时禁用警告 EDIT 是的 我知道 最好的办法是修复这些警告以避免任何未定义 未知的行为 但目前在这里 我第一次编写了巨大的代码 并且在
  • Qt 计算和比较密码哈希

    目前正在 Qt 中为测验程序构建面向 Web 的身份验证服务 据我了解 在数据库中存储用户密码时 必须对其进行隐藏 以防落入坏人之手 流行的方法似乎是添加的过程Salt https en wikipedia org wiki Salt cr
  • 有没有办法使用 i387 fsqrt 指令获得正确的舍入?

    有没有办法使用 i387 fsqrt 指令获得正确的舍入 除了改变精确模式在 x87 控制字中 我知道这是可能的 但这不是一个合理的解决方案 因为它存在令人讨厌的重入型问题 如果 sqrt 操作中断 精度模式将出错 我正在处理的问题如下 x
  • 单线程公寓问题

    从我的主窗体中 我调用以下命令来打开一个新窗体 MyForm sth new MyForm sth show 一切都很好 但是这个表单有一个组合框 当我将其 AutoCompleteMode 切换为建议和追加时 我在显示表单时遇到了这个异常
  • 我可以仅在少数情况下关闭模拟吗

    我有一个始终使用模拟的应用程序 但是 当用户以管理员身份登录时 一些操作需要他们写入服务器本身 现在 如果这些用户在实际服务器上没有权限 有些用户没有 则不会让他们写入 我想做的是关闭几个命令的模拟 有没有办法做这样的事情 using Ho
  • 指向字节数组的指针

    由于 Misra C 的要求 我的一位同事想要使用指针声明 但我遇到了一些问题 Misra 安全关键指南 不会让我们纯粹的程序员使用指针 但会让我们对数组字节进行操作 他打算获取一个指向字节数组的指针 因此我们不会在堆栈上传递实际的数组 T
  • 如何添加重试以调用 Web 服务?

    我有一个应用程序调用使用 wsHttpBinding 的 Web 服务 我需要在连接超时等情况下对 Web 服务调用实现某种重试功能 执行此操作的最佳方法是什么 我已经阅读过有关 WS ReliableMessaging 的内容 但这不是
  • 以编程方式更新 ClickOnce 应用程序的部署清单会导致缺少 4.0 中所需的 <兼容框架> 元素

    我正在致力于自动化 NET 4 0 ClickOnce WPF 应用程序的安装程序 该应用程序需要在应用程序配置文件 我经历了寻找必须遵循的具体步骤的棘手过程Mage exe http msdn microsoft com en us li
  • 在简单注入器中注册具有多个构造函数和字符串依赖项的类型

    我正在尝试弄清楚如何使用 Simple Injector 我在项目中使用了它 注册简单服务及其组件没有任何问题 但是 当组件具有两个以上实现接口的构造函数时 我想使用依赖注入器 public DAL IDAL private Logger
  • 在VisualStudio DTE中,如何获取ActiveDocument的内容?

    我正在 VisualStudio 中编写脚本 并尝试获取当前 ActiveDocument 的内容 这是我当前的解决方案 var visualStudio new API VisualStudio 2010 var vsDTE visual
  • 将非算术类型作为参数传递给 cmath 函数是否有效?

    给定以下用户定义类型S具有转换功能double struct S operator double return 1 0 以及以下调用cmath http en cppreference com w cpp header cmath使用类型的
  • .NET JIT 编译的代码缓存在哪里?

    NET 程序首先被编译为 MSIL 代码 当它被执行时 JIT编译器会将其编译为本机机器代码 我想知道 这些JIT编译的机器代码存储在哪里 它只存储在进程的地址空间中吗 但由于程序的第二次启动比第一次快得多 我认为即使在执行完成后 该本机代
  • 使用(linq to sql)更新错误

    我有两个表 通过外键 CarrierID 绑定 Carrier CarrierID CarrierName CarrierID 1 CarrierName DHL CarrierID 2 CarrierName Fedex Vendor V
  • TPL 数据流块下游如何获取源生成的数据?

    我正在使用 TPL Dataflow 处理图像 我收到处理请求 从流中读取图像 应用多次转换 然后将生成的图像写入另一个流 Request gt Stream gt Image gt Image gt Stream 为此 我使用块 Buff
  • 纯虚函数可能没有内联定义。为什么?

    纯虚函数是那些虚函数并且具有纯说明符 0 第 10 4 条第 2 款C 03 的内容告诉我们什么是抽象类 顺便说一句 如下 注意 函数声明不能 同时提供纯说明符和定义 尾注 示例 struct C virtual void f 0 ill
  • 如何获取 QIcon 的文件/资源​​路径

    假设我做了这样的事情 QIcon myIcon resources icon ico 我稍后如何确定该图标的路径 例如 QString path myIcon getPath 问题是 没有getPath 会员 我找不到类似的东西 但肯定有办
  • System.IO.Compression 和 ZipFile - 提取并覆盖

    我使用标准 VB NET 库来提取和压缩文件 它也可以工作 但是当我必须提取并且文件已经存在时 问题就出现了 我使用的代码 Imports Imports System IO Compression 崩溃时我调用的方法 ZipFile Ex
  • 双击事件 - 多个范围

    我正在寻找为双击事件在多个范围内进行编码的最佳方法 Private Sub Worksheet BeforeDoubleClick ByVal Target As Range Cancel As Boolean If Not Interse

随机推荐

  • UITextField 仅在顶部带有圆角

    我想实现一个仅在左上角和右上角有圆角的 UITextField 我知道 setter 方法 setCornerRadius 这是 UITextField 的默认选项 但此选项只允许我将 txtfield 的所有四个角设为圆形 但我只希望顶部
  • 如何使用Vault在Ansible中运行playbook api

    我有一本带有Vault的剧本 我可以运行它 ansible playbook info yml ask vault pass 现在 我想在 Ansible 中运行我的 playbook api 答案在如何使用Vault在Ansible v2
  • 数据库查询的内部实现

    根据我的经验 我使用过很多查询 例如select order by wheremysql sql server oracle 等中的子句等 有那么一刻我想 1 内部是如何编写来实现上述查询的 2 他们使用哪种语言 3 那是编程语言吗 如果是
  • 删除损坏的链接 Unix

    我想删除损坏的链接 但在此之前我想确认目录中是否存在链接文件 我们来调用一下链接A if a A then print ya A is ther fi But if A链接已损坏 那么我该如何检查 find L type l找到损坏的符号链
  • OpenGL 说“from_param 收到了一个不连续的数组”

    安装 Yosemite 后 我必须升级 numpy PyOpenGL 等 现在 以前运行的程序给了我以下堆栈跟踪 file latebind pyx line 44 in OpenGL accelerate latebind Curry c
  • 如何调整 jQuery UI 手风琴的高度?

    在我的用户界面中 我有一个像这样的手风琴设置 div h3 Section 1 h3 div content div More sections div 手风琴在刚形成时工作正常 并且似乎可以很好地适应每个部分内的内容 但是 如果我在 ac
  • C:Do-While 循环重复太多!

    我有一个让我困惑的小程序 我正在尝试使用循环来获取用户的输入 如果输入错误 则再次重复 如果正确 则退出 代码片段是 void main char user status Checks User Status q Quiz Master a
  • 使用 pandas 在不同轴上绘制条形图和时间序列图

    我有一个 pandas 数据框 它是从具有以下结构的 csv 文件中读取的 Date Latitude Longitude Brand Pump AKI Trip Miles Total Miles Gallons MPG PPG Tota
  • Kafka 一遍又一遍地重放消息 - 心跳会话已过期 - 标记协调器已死亡

    使用 python kafka api 从只有少量消息的主题中读取消息 Kafka 不断地一遍又一遍地重放队列中的消息 它从我的主题接收一条消息 返回每条消息内容 然后抛出ERROR Heartbeat session expired ma
  • 从字符串编译Java源代码? [复制]

    这个问题在这里已经有答案了 有没有办法让正在运行的Java程序编译Java源代码 作为字符串传递 Class newClass Compiler compile class ABC void xyz etc etc 理想情况下 传入源代码引
  • 在 PHP 中 RESTful 上传文件

    因此 我正在编写一个脚本 该脚本将通过 RESTful 接口将视频上传到服务器 文档告诉我 我应该将数据 包括二进制视频文件 作为 POST 请求的一部分传递 我知道如何设置我的 POST 变量 但我不知道如何处理二进制数据 API 说我应
  • 在 jQuery 中替换元素并返回新元素

    如何替换 jQuery 中的元素并返回替换元素而不是被删除的元素 我有以下场景 我有很多复选框 一旦您单击其中一个 该复选框就会被加载图标取代 一旦发生一些 AJAX 事件 加载图标就会被勾号图标取代 使用 jQuery 的replaceW
  • 从弹出视图控制器传递数据

    我有两个视图控制器 我首先打开 当我按下按钮时 第二个视图控制器被推到导航控制器堆栈上 在这里 在第二个视图控制器中 我有一个表视图 当我点击某些行时 它们被选中 如复选框 并且与该行相关的一些数据被添加到数组中 现在 当我完成选择后 我想
  • 获取 gradle 构建的 aapt2 参数?

    我有兴趣尝试使用 aapt2 从命令行编译 Android 应用程序 当我尝试执行以下操作时 链接约束布局库时遇到问题aapt2 link命令 该程序从 Android studio gradle 成功构建 如何使 gradle 命令行调用
  • ASP.NET Core 2.2 中的路由本地化

    我正在使用 ASP NET Core 2 2 开发应用程序 并且正在努力解决如何实现路由本地化的问题 例如 根据请求 如果路线中未指定语言 我需要重定向到路线 en products 如果未指定语言 则从接受语言标头获取区域设置 下面的de
  • 如何在 Spring MVC 中使用延迟加载

    Spring MVC中如何使用延迟加载 我现在正在使用 eager 但这会使我的应用程序运行速度变慢 这是我的域的一部分 ManyToMany fetch FetchType EAGER JoinTable name NEWS TAG jo
  • 直接屏幕像素/帧缓冲区访问[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想尝试创建一个玩游戏的程序 IE 机器人 我希望能够直接访问屏幕上的像素 IE 让我的程序 看到 一场比赛 然后 采取行动 或者至少
  • Windows批处理文件-显示所有子文件夹

    我在使用 Windows 批处理文件返回 JUST 文件夹 忽略文件 时遇到困难 这就是我现在所拥有的 目前它正在返回文件和子子文件夹 for r g in xx do echo g 另外 假设我只想返回以几个不同前缀开头的文件夹 例如 我
  • 如何向 gitlab-ci.yml 添加多行 bash EOD 命令?

    这个问题已被问过多次 但大多数问题都很容易解决 尽管使用工具expect它没有像我预期的那样工作 usr bin expect lt
  • 在openxml中向Excel添加样式

    我想在打开的 Excel 文档中设置文本的前景色以写入文本 为此我尝试过 var stylesheet1 spreadSheet WorkbookPart WorkbookStylesPart Stylesheet Fills fills1