冰蓝科技
|
028-81705109
|
|
微信扫一扫
|

Spire.Cloud 纯前端文档控件

字符格式用于更改单个单词或短语的外观。带格式的文本可以将读者的注意力引导到文档的选定部分并突出显示关键信息。您可以在 Word 中使用多种形式的字符格式。在本文中,您将学习如何使用 Spire.Doc for .NET 在 C# 和 VB.NET 中将各种类型的格式应用于 Word 中的字符。

安装 Spire.Doc for .NET

首先,您需要添加 Spire.Doc for .NET 包中包含的 DLL 文件作为 .NET 项目中的引用。DLL 文件可以从此链接下载或通过 NuGet 安装。

PM> Install-Package Spire.Doc

将格式应用于 Word 中的字符

为了将格式应用于一段文本,您需要获取 TextRange 中的文本,然后通过 CharacterFormat 属性对 TextRange 中的字符进行格式化。详细步骤如下:

  • C#
  • VB.NET
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System.Drawing;

namespace ApplyFormattingToCharacters
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建Document对象
            Document document = new Document();

            //添加一个节
            Section sec = document.AddSection();

            //添加一个段落
            Paragraph paragraph = sec.AddParagraph();
            //应用字体到整个段落
            ParagraphStyle defaultFont = new ParagraphStyle(document);
            defaultFont.CharacterFormat.FontName = "宋体";
            document.Styles.Add(defaultFont);
            paragraph.ApplyStyle(defaultFont.Name);
            paragraph.AppendText("这是一段具有各种字符样式的段落。这是");

            //将文本附加到段落并返回一个 TextRange 对象
            TextRange tr = paragraph.AppendText("带删除线的文本");

            //通过 TextRange 对象设置字符格式为删除线
            tr.CharacterFormat.IsStrikeout = true;

            //对文本应用阴影效果
            paragraph.AppendText("。这是");
            tr = paragraph.AppendText("带阴影的文字");
            tr.CharacterFormat.IsShadow = true;

            //设置字体大小
            paragraph.AppendText("。这是");
            tr = paragraph.AppendText("大号字体的文本");
            tr.CharacterFormat.FontSize = 20;

            //设置字体
            paragraph.AppendText("。这是");
            tr = paragraph.AppendText("微软雅黑字体的文本");
            tr.CharacterFormat.FontName = "微软雅黑";

            //设置字体颜色
            paragraph.AppendText("。这是");
            tr = paragraph.AppendText("红色字体");
            tr.CharacterFormat.TextColor = Color.Red;

            //对文本应用粗体和斜体
            paragraph.AppendText("。这是");
            tr = paragraph.AppendText("粗体和斜体文本");
            tr.CharacterFormat.Bold = true;
            tr.CharacterFormat.Italic = true;

            //对文本应用下划线
            paragraph.AppendText("。这是");
            tr = paragraph.AppendText("带下划线的文字");
            tr.CharacterFormat.UnderlineStyle = UnderlineStyle.Single;

            //将背景颜色应用于文本
            paragraph.AppendText("。这是");
            tr = paragraph.AppendText("带有高亮颜色的文本");
            tr.CharacterFormat.HighlightColor = Color.Yellow;

            //将边框应用于文本
            paragraph.AppendText("。这是");
            tr = paragraph.AppendText("带边框的文字");
            tr.CharacterFormat.Border.BorderType = Spire.Doc.Documents.BorderStyle.Single;
            tr.CharacterFormat.Border.Color = Color.Black;

            //将着重号应用于文本
            paragraph.AppendText("。这是");
            tr = paragraph.AppendText("带着重号的文本");
            tr.CharacterFormat.EmphasisMark = Emphasis.DotBelow;

            //将上标应用于文本
            paragraph.AppendText("。这是一个数学公式:a");
            tr = paragraph.AppendText("2");
            tr.CharacterFormat.SubSuperScript = SubSuperScript.SuperScript;
            paragraph.AppendText(" + b");
            tr = paragraph.AppendText("2");
            tr.CharacterFormat.SubSuperScript = SubSuperScript.SuperScript;
            paragraph.AppendText(" = c");
            tr = paragraph.AppendText("2");
            tr.CharacterFormat.SubSuperScript = SubSuperScript.SuperScript;
            paragraph.AppendText(".");

            //保存文件
            document.SaveToFile("设置字符格式.docx", FileFormat.Docx);
        }
    }
}
Imports Spire.Doc
Imports Spire.Doc.Documents
Imports Spire.Doc.Fields
Imports System.Drawing

Namespace ApplyFormattingToCharacters
    Friend Class Program
        Private Shared Sub Main(ByVal args As String())
            '创建Document对象
            Dim document As Document = New Document()

            '添加一个节
            Dim sec As Section = document.AddSection()

            '添加一个段落
            Dim paragraph As Paragraph = sec.AddParagraph()
            '应用字体到整个段落
            Dim defaultFont As ParagraphStyle = New ParagraphStyle(document)
            defaultFont.CharacterFormat.FontName = "宋体"
            document.Styles.Add(defaultFont)
            paragraph.ApplyStyle(defaultFont.Name)
            paragraph.AppendText("这是一段具有各种字符样式的段落。这是")

            '将文本附加到段落并返回一个 TextRange 对象
            Dim tr As TextRange = paragraph.AppendText("带删除线的文本")

            '通过 TextRange 对象设置字符格式为删除线
            tr.CharacterFormat.IsStrikeout = True

            '对文本应用阴影效果
            paragraph.AppendText("。这是")
            tr = paragraph.AppendText("带阴影的文字")
            tr.CharacterFormat.IsShadow = True

            '设置字体大小
            paragraph.AppendText("。这是")
            tr = paragraph.AppendText("大号字体的文本")
            tr.CharacterFormat.FontSize = 20

            '设置字体
            paragraph.AppendText("。这是")
            tr = paragraph.AppendText("微软雅黑字体的文本")
            tr.CharacterFormat.FontName = "微软雅黑"

            '设置字体颜色
            paragraph.AppendText("。这是")
            tr = paragraph.AppendText("红色字体")
            tr.CharacterFormat.TextColor = Color.Red

            '对文本应用粗体和斜体
            paragraph.AppendText("。这是")
            tr = paragraph.AppendText("粗体和斜体文本")
            tr.CharacterFormat.Bold = True
            tr.CharacterFormat.Italic = True

            '对文本应用下划线
            paragraph.AppendText("。这是")
            tr = paragraph.AppendText("带下划线的文字")
            tr.CharacterFormat.UnderlineStyle = UnderlineStyle.[Single]

            '将背景颜色应用于文本
            paragraph.AppendText("。这是")
            tr = paragraph.AppendText("带有高亮颜色的文本")
            tr.CharacterFormat.HighlightColor = Color.Yellow

            '将边框应用于文本
            paragraph.AppendText("。这是")
            tr = paragraph.AppendText("带边框的文字")
            tr.CharacterFormat.Border.BorderType = Spire.Doc.Documents.BorderStyle.[Single]
            tr.CharacterFormat.Border.Color = Color.Black

            '将着重号应用于文本
            paragraph.AppendText("。这是")
            tr = paragraph.AppendText("带着重号的文本")
            tr.CharacterFormat.EmphasisMark = Emphasis.DotBelow

            '将上标应用于文本
            paragraph.AppendText("。这是一个数学公式:a")
            tr = paragraph.AppendText("2")
            tr.CharacterFormat.SubSuperScript = SubSuperScript.SuperScript
            paragraph.AppendText(" + b")
            tr = paragraph.AppendText("2")
            tr.CharacterFormat.SubSuperScript = SubSuperScript.SuperScript
            paragraph.AppendText(" = c")
            tr = paragraph.AppendText("2")
            tr.CharacterFormat.SubSuperScript = SubSuperScript.SuperScript
            paragraph.AppendText(".")

            '保存文件
            document.SaveToFile("设置字符格式.docx", FileFormat.Docx)
        End Sub
    End Class
End Namespace

C#/VB.NET 将格式应用于 Word 中的字符

申请临时 License

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。

Spire.Office for Java 7.12.5 已发布。在本次更新中,Spire.Doc新增支持 .NET 7.0 平台,并且支持为段落设置“如果定义了文档网格,则对齐到网格”功能;Spire.PDF增加了转换 PDF 到 Word 的新接口;Spire.XLS新增支持 .NET 7.0 平台;Spire.Presentation修复了将PPT幻灯片保存为图像后,内容丢失的问题。此外,本次更新还成功修复了许多已知问题。详情请阅读以下内容。

该版本涵盖了最新版的 Spire.Doc,Spire.PDF,Spire.XLS,Spire.Email,Spire.DocViewer, Spire.PDFViewer,Spire.Presentation,Spire.Spreadsheet, Spire.OfficeViewer, Spire.DocViewer, Spire.Barcode, Spire.DataExport。

版本信息如下:

获取Spire.Office 7.12.5请点击:

https://www.e-iceblue.cn/Downloads/Spire-Office-NET.html


Spire.Doc

新功能:

问题修复:


Spire.PDF

新功能:

问题修复:


Spire.XLS

问题修复:


Spire. Presentation

问题修复:

Spire.Office for Java 7.12.4 已发布。在本次更新中,Spire.PDF for Java 支持创建标签 PDF 文件;Spire.Presentation for Java 支持克隆整个表格内容到新的幻灯片中;Spire.Doc for Java 增强了 Word 到 PDF 的转换;Spire.XLS for Java 增强了 Excel 到 PDF 和图片以及 XLSM 到 PDF 的转换。此外,本次更新还成功修复了许多已知问题。详情请阅读以下内容。

获取 Spire.Office for Java 7.12.4请点击:

https://www.e-iceblue.cn/Downloads/Spire-Office-JAVA.html


Spire.PDF for Java

新功能:

问题修复:


Spire.Presentation for Java

新功能:

问题修复:


Spire.Doc for Java

问题修复:


Spire.XLS for Java

问题修复:

Spire.Presentation for Java 7.12.4已发布。本次更新新增支持克隆整个表格内容到新的幻灯片中,并增强了 PPT 到图像的转换。同时,该版本还修复了一些已知问题,如文本的填充颜色获取不正确的问题。详情请阅读以下内容。

新功能:

问题修复:


获取Spire.Presentation for Java 7.12.4请点击:

https://www.e-iceblue.cn/Downloads/Spire-Presentation-JAVA.html

Spire.XLS for Java 12.12.4 已发布。本次更新增强了 Excel 到 PDF 和图片以及 XLSM 到 PDF 的转换。此外,许多已知问题也在该版本成功被修复,如创建的透视表的日期格式不正确和绘制图片水印时透明度丢失的问题。详情请阅读以下内容。

问题修复:


下载Spire.XLS for Java 12.12.4请点击:

https://www.e-iceblue.cn/Downloads/Spire-XLS-JAVA.html

Spire.Doc 10.12.4 已发布。该版本新增支持 .NET 7.0 平台。同时,该版本支持为段落设置“如果定义了文档网格,则对齐到网格”功能,并增强了Word 到 PDF的转换功能。此外,还修复了文本取代后字符间距改变等已知问题。详情请阅读以下内容。

新功能:

问题修复:


获取Spire.Doc 10.12.4请点击:

https://www.e-iceblue.cn/Downloads/Spire-Doc-NET.html

Spire.PDF 8.12.7 已发布。该版本增加了转换 PDF 到 Word 的新接口。本次更新还增强了 PDF 到 Excel 的转换功能。此外,该版本还修复了许多已知问题,如通过位置查找到的文本内容不正确的问题。详情请阅读以下内容。

新功能:

问题修复:


获取Spire.PDF 8.12.7请点击:

https://www.e-iceblue.cn/Downloads/Spire-PDF-NET.html

Word 和 Excel 在用途和功能方面彼此不同。Word 主要用于文本文档,如论文、电子邮件、信件、书籍、简历或学术论文,其中文本格式是必不可少的。Excel 用于保存数据、制作表格和图表以及进行复杂的计算。

不建议将复杂的 Word 文件转换为 Excel 电子表格,因为 Excel 很难像 Word 一样呈现内容。但是,如果你的 Word 文档主要由表格组成,而你想在 Excel 中分析表格数据,则可以使用 Spire.Office for Java 将 Word 转为 Excel,并同时保持良好的可读性。

安装 Spire.Office for Java

首先,您需要在 Java 程序中添加 Spire.Office.jar 文件作为依赖项。您可以从 这个链接 下载 JAR 文件;如果您使用 Maven,则可以通过在 pom.xml 文件中添加以下代码导入 JAR 文件。

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.office</artifactId>
        <version>11.9.0</version>
    </dependency>
</dependencies>

将 Word 转为 Excel

这个场景实际上使用了 Spire.Office 包中的两个库。分别是 Spire.Doc for Java 和 Spire.XLS for Java。前者用于从 Word 文档中读取和提取内容,后者用于创建 Excel 文档并在特定单元格中写入数据。为了使此代码示例易于理解,我们创建了以下三个执行特定功能的自定义方法。

以下步骤演示了如何使用 Spire.Office for Java 将数据从 Word 文档导出到工作表。

  • Java
import com.spire.doc.*;
import com.spire.doc.documents.Paragraph;
import com.spire.doc.fields.DocPicture;
import com.spire.doc.fields.TextRange;
import com.spire.xls.*;

import java.awt.*;

public class ConvertWordToExcel {

    public static void main(String[] args) {

        //创建一个 Document 对象
        Document doc = new Document();

        //加载 Word 文件
        doc.loadFromFile("XXX公司采购单.docx");

        //创建一个 Workbook 对象
        Workbook wb = new Workbook();

        //删除默认工作表
        wb.getWorksheets().clear();

        //创建一个名为“WordToExcel”的工作表
        Worksheet worksheet = wb.createEmptySheet("WordToExcel");
        int row = 1;
        int column = 1;

        //循环遍历 Word 文档中的各个节
        for (int i = 0; i < doc.getSections().getCount(); i++) {
            //获取特定节
            Section section = doc.getSections().get(i);

            //遍历某个节下的所有文档对象
            for (int j = 0; j < section.getBody().getChildObjects().getCount(); j++) {
                //获取特定的文档对象
                DocumentObject documentObject = section.getBody().getChildObjects().get(j);

                //判断对象是否为段落
                if (documentObject instanceof Paragraph) {
                    CellRange cell = worksheet.getCellRange(row, column);
                    Paragraph paragraph = (Paragraph) documentObject;
                    //将段落从 Word 复制到特定单元格
                    copyTextAndStyle(cell, paragraph);
                    row++;
                }

                //判断对象是否为表格
                if (documentObject instanceof Table) {
                    Table table = (Table) documentObject;
                    //将表格数据从 Word 导出到 Excel
                    int currentRow = exportTableInExcel(worksheet, row, table);
                    row = currentRow;
                }
            }
        }

        //在单元格中换行文本
        worksheet.getAllocatedRange().isWrapText(true);

        //自动调整行高和列宽
        worksheet.getAllocatedRange().autoFitRows();
        worksheet.getAllocatedRange().autoFitColumns();

        //将工作簿保存到 Excel 文件
        wb.saveToFile("output.xlsx", ExcelVersion.Version2013);
    }

    //将数据从 Word 表格导出到 Excel 单元格
    private static int exportTableInExcel(Worksheet worksheet, int row, Table table) {
        CellRange cell;
        int column;
        for (int i = 0; i < table.getRows().getCount(); i++) {
            column = 1;
            TableRow tbRow = table.getRows().get(i);
            for (int j = 0; j < tbRow.getCells().getCount(); j++) {
                TableCell tbCell = tbRow.getCells().get(j);
                cell = worksheet.getCellRange(row, column);
                cell.borderAround(LineStyleType.Thin, Color.BLACK);
                copyContentInTable(tbCell, cell);
                column++;
            }
            row++;
        }
        return row;
    }

    //将内容从 Word 表格单元格复制到 Excel 单元格
    private static void copyContentInTable(TableCell tbCell, CellRange cell) {
        Paragraph newPara = new Paragraph(tbCell.getDocument());
        for (int i = 0; i < tbCell.getChildObjects().getCount(); i++) {
            DocumentObject documentObject = tbCell.getChildObjects().get(i);
            if (documentObject instanceof Paragraph) {
                Paragraph paragraph = (Paragraph) documentObject;
                for (int j = 0; j < paragraph.getChildObjects().getCount(); j++) {
                    DocumentObject cObj = paragraph.getChildObjects().get(j);
                    newPara.getChildObjects().add(cObj.deepClone());
                }
                if (i < tbCell.getChildObjects().getCount() - 1) {
                    newPara.appendText("\n");
                }
            }
        }
        copyTextAndStyle(cell, newPara);
    }

    //将段落的文本和样式复制到单元格
    private static void copyTextAndStyle(CellRange cell, Paragraph paragraph) {

        RichText richText = cell.getRichText();
        richText.setText(paragraph.getText());
        int startIndex = 0;
        for (int i = 0; i < paragraph.getChildObjects().getCount(); i++) {
            DocumentObject documentObject = paragraph.getChildObjects().get(i);
            if (documentObject instanceof TextRange) {
                TextRange textRange = (TextRange) documentObject;
                String fontName = textRange.getCharacterFormat().getFontName();
                boolean isBold = textRange.getCharacterFormat().getBold();
                Color textColor = textRange.getCharacterFormat().getTextColor();
                float fontSize = textRange.getCharacterFormat().getFontSize();
                String textRangeText = textRange.getText();
                int strLength = textRangeText.length();
                ExcelFont font = new ExcelFont(cell.getWorksheet().getWorkbook().createFont());
                font.setColor(textColor);
                font.isBold(isBold);
                font.setSize(fontSize);
                font.setFontName(fontName);
                int endIndex = startIndex + strLength;
                richText.setFont(startIndex, endIndex, font);
                startIndex += strLength;
            }
            if (documentObject instanceof DocPicture) {
                DocPicture picture = (DocPicture) documentObject;
                cell.getWorksheet().getPictures().add(cell.getRow(), cell.getColumn(), picture.getImage());
                cell.getWorksheet().setRowHeightInPixels(cell.getRow(), 1, picture.getImage().getHeight());
            }
        }
        switch (paragraph.getFormat().getHorizontalAlignment()) {
            case Left:
                cell.setHorizontalAlignment(HorizontalAlignType.Left);
                break;
            case Center:
                cell.setHorizontalAlignment(HorizontalAlignType.Center);
                break;
            case Right:
                cell.setHorizontalAlignment(HorizontalAlignType.Right);
                break;
        }
    }
}

Java 将 Word 转为 Excel

申请临时 License

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。

Spire.Office 7.12 已发布。在本次更新中,Spire.PDF支持设置表单域的可见与隐藏属性、添加自定义的元数据以及给 PDF 文档的元数据添加新的命名空间;Spire.XLS新增支持 .NET 7.0 平台;Spire.Presentation修复了将PPT幻灯片保存为图像后,内容丢失的问题。此外,本次更新还成功修复了大量已知问题。详情请阅读以下内容。

该版本涵盖了最新版的 Spire.Doc,Spire.PDF,Spire.XLS,Spire.Email,Spire.DocViewer, Spire.PDFViewer,Spire.Presentation,Spire.Spreadsheet, Spire.OfficeViewer, Spire.DocViewer, Spire.Barcode, Spire.DataExport。

版本信息如下:

获取Spire.Office 7.12请点击:

https://www.e-iceblue.cn/Downloads/Spire-Office-NET.html


Spire.PDF

新功能:

问题修复:


Spire. Presentation

问题修复:

Spire.XLS 12.12.3 已发布。该版本新增支持 .NET 7.0 平台。同时,本次更新还增强了 Excel 到 PDF 和 CSV 以及 HTML 到 Excel 的转换功能。此外,一些已知问题也在该版本得到成功修复,如调用 Save() 函数保存 .et 格式文档修改的数据时保存失败的问题。详情请阅读以下内容。

问题修复:


下载Spire.XLS 12.12.3请点击:

https://www.e-iceblue.cn/Downloads/Spire-XLS-NET.html