草庐IT

如何通过C#/VB.NET代码在Word中更改字体颜色

Carina-baby 2023-03-28 原文

在日常工作中,我们有时会需要修改字体的颜色来突出文本重点,让读者更容易抓住文章要点。在今天这篇文章中,我将为大家介绍如何以编程方式,在Word更改字体颜色。本文将分为两部分分别介绍如何实现此操作。以下是我整理的步骤及方法,并附上C#/VB.NET代码供大家参考。

更改段落字体颜色

更改特定文本字体颜色

程序环境

本次测试时,在程序中引入Free Spire.Doc for .NET。可通过以下方法引用 Free Spire.Doc.dll文件:

方法1:将 Free Spire.Doc for .NET下载到本地,解压,安装。安装完成后,找到安装路径下BIN文件夹中的 Spire.Doc.dll。然后在Visual Studio中打开“解决方案资源管理器”,鼠标右键点击“引用”,“添加引用”,将本地路径BIN文件夹下的dll文件添加引用至程序。

方法2:通过NuGet安装。可通过以下2种方法安装:

(1)可以在Visual Studio中打开“解决方案资源管理器”,鼠标右键点击“引用”,“管理NuGet包”,然后搜索“Free Spire.Doc”,点击“安装”。等待程序安装完成。

(2)将以下内容复制到PM控制台安装。

Install-Package FreeSpire.Doc -Version 10.8.0

更改段落字体颜色

以下是更改 Word 文档中段落字体颜色的步骤:

  • 创建一个Document实例。
  • 使用 Document.LoadFromFile() 方法加载 Word 文档。
  • 使用 Document.Sections[sectionIndex] 属性获取所需的节。
  • 使用 Section.Paragraphs[paragraphIndex] 属性获取要更改字体颜色的所需段落。
  • 创建一个 ParagraphStyle 实例。
  • 使用 ParagraphStyle.Name 和 ParagraphStyle.CharacterFormat.TextColor 属性设置样式名称和字体颜色。
  • 使用 Document.Styles.Add() 方法将样式添加到文档中。
  • 使用 Paragraph.ApplyStyle() 方法将样式应用于段落。
  • 使用 Document.SaveToFile() 方法保存结果文档。

完整代码

C#

using Spire.Doc;
using Spire.Doc.Documents;
using System.Drawing;

namespace ChangeFontColorForParagraph
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建一个Document实例
            Document document = new Document();
            //Load a Word document
            document.LoadFromFile("生死疲劳.docx");

            //获取第一节
            Section section = document.Sections[0];

            //更改第一段文本颜色
            Paragraph p1 = section.Paragraphs[0];
            ParagraphStyle s1 = new ParagraphStyle(document);
            s1.Name = "Color1";
            s1.CharacterFormat.TextColor = Color.Blue;
            document.Styles.Add(s1);
            p1.ApplyStyle(s1.Name);

            //更改第二段文本颜色
            Paragraph p2 = section.Paragraphs[1];
            ParagraphStyle s2 = new ParagraphStyle(document);
            s2.Name = "Color2";
            s2.CharacterFormat.TextColor = Color.Green;
            document.Styles.Add(s2);
            p2.ApplyStyle(s2.Name);

            //保存结果文档
            document.SaveToFile("更改段落字体颜色.docx", FileFormat.Docx);
        }
    }
}

VB.NET

Imports Spire.Doc
Imports Spire.Doc.Documents
Imports System.Drawing

Namespace ChangeFontColorForParagraph
    Friend Class Program
        Private Shared Sub Main(ByVal args As String())
            '创建一个Document实例
            Dim document As Document = New Document()
            'Load a Word document
            document.LoadFromFile("生死疲劳.docx")

            '获取第一节
            Dim section As Section = document.Sections(0)

            '更改第一段文本颜色
            Dim p1 As Paragraph = section.Paragraphs(0)
            Dim s1 As ParagraphStyle = New ParagraphStyle(document)
            s1.Name = "Color1"
            s1.CharacterFormat.TextColor = Color.Blue
            document.Styles.Add(s1)
            p1.ApplyStyle(s1.Name)

            '更改第二段文本颜色
            Dim p2 As Paragraph = section.Paragraphs(1)
            Dim s2 As ParagraphStyle = New ParagraphStyle(document)
            s2.Name = "Color2"
            s2.CharacterFormat.TextColor = Color.Green
            document.Styles.Add(s2)
            p2.ApplyStyle(s2.Name)

            '保存结果文档
            document.SaveToFile("更改段落字体颜色.docx", FileFormat.Docx)
        End Sub
    End Class
End Namespace

效果图

更改特定文本字体颜色

以下是更改 Word 文档中特定文本字体颜色的步骤:

  • 创建一个Document实例。
  • 使用 Document.LoadFromFile() 方法加载 Word 文档。
  • 使用 Document.FindAllString() 方法查找指定文本。
  • 调用TextSelection.GetAsOneRange().CharacterFormat.TextColor 属性,循环遍历所有指定文本,并更改其字体颜色
  • 使用 Document.SaveToFile() 方法保存结果文档。

完整代码

C#

 

using Spire.Doc;
using Spire.Doc.Documents;
using System.Drawing;

namespace ChangeFontColorForText
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建一个Document实例
            Document document = new Document();
            //加载 Word 文档
            document.LoadFromFile("生死疲劳.docx");

            //查找指定文本
            TextSelection[] text = document.FindAllString("生死疲劳", false, true);

            //更改特定文本的字体颜色
            foreach (TextSelection seletion in text)
            {
                seletion.GetAsOneRange().CharacterFormat.TextColor = Color.HotPink;
            }

            //保存结果文档
            document.SaveToFile("更改特定文本字体颜色.docx", FileFormat.Docx);
        }
    }
}

VB.NET

Imports Spire.Doc
Imports Spire.Doc.Documents
Imports System.Drawing

Namespace ChangeFontColorForText
    Friend Class Program
        Private Shared Sub Main(ByVal args As String())
            '创建一个Document实例
            Dim document As Document = New Document()
            '加载 Word 文档
            document.LoadFromFile("生死疲劳.docx")

            '查找指定文本
            Dim text As TextSelection() = document.FindAllString("生死疲劳", False, True)

            '更改特定文本的字体颜色
            For Each seletion As TextSelection In text
                seletion.GetAsOneRange().CharacterFormat.TextColor = Color.HotPink
            Next

            '保存结果文档
            document.SaveToFile("更改特定文本字体颜色.docx", FileFormat.Docx)
        End Sub
    End Class
End Namespace

效果图

—本文完—

有关如何通过C#/VB.NET代码在Word中更改字体颜色的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. ruby-on-rails - Ruby net/ldap 模块中的内存泄漏 - 2

    作为我的Rails应用程序的一部分,我编写了一个小导入程序,它从我们的LDAP系统中吸取数据并将其塞入一个用户表中。不幸的是,与LDAP相关的代码在遍历我们的32K用户时泄漏了大量内存,我一直无法弄清楚如何解决这个问题。这个问题似乎在某种程度上与LDAP库有关,因为当我删除对LDAP内容的调用时,内存使用情况会很好地稳定下来。此外,不断增加的对象是Net::BER::BerIdentifiedString和Net::BER::BerIdentifiedArray,它们都是LDAP库的一部分。当我运行导入时,内存使用量最终达到超过1GB的峰值。如果问题存在,我需要找到一些方法来更正我的代

  4. ruby-on-rails - Ruby on Rails 迁移,将表更改为 MyISAM - 2

    如何正确创建Rails迁移,以便将表更改为MySQL中的MyISAM?目前是InnoDB。运行原始执行语句会更改表,但它不会更新db/schema.rb,因此当在测试环境中重新创建表时,它会返回到InnoDB并且我的全文搜索失败。我如何着手更改/添加迁移,以便将现有表修改为MyISAM并更新schema.rb,以便我的数据库和相应的测试数据库得到相应更新? 最佳答案 我没有找到执行此操作的好方法。您可以像有人建议的那样更改您的schema.rb,然后运行:rakedb:schema:load,但是,这将覆盖您的数据。我的做法是(假设

  5. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  6. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  7. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  8. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  9. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  10. ruby - 通过 rvm 升级 ruby​​gems 的问题 - 2

    尝试通过RVM将RubyGems升级到版本1.8.10并出现此错误:$rvmrubygemslatestRemovingoldRubygemsfiles...Installingrubygems-1.8.10forruby-1.9.2-p180...ERROR:Errorrunning'GEM_PATH="/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/ruby-1.9.2-p180@global:/Users/foo/.rvm/gems/ruby-1.9.2-p180:/Users/foo/.rvm/gems/rub

随机推荐