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

Spire.Cloud 纯前端文档控件

在处理 Excel 文件时,除了常见的数据读写操作,有时还需要进一步控制 Excel 文件在打开时的显示状态。例如,当用户打开一个包含多个工作表的 Excel 报表时,你可能希望它默认显示某个特定的工作表,或自动将光标定位到某个关键单元格,从而帮助用户更快地查看重点数据或进行编辑操作,提升文件的可读性和用户体验。

本教程将介绍如何使用 Java 和 Spire.XLS for Java 库设置 Excel 文件中的活动工作表和活动单元格。

安装 Spire.XLS for Java

首先,您需要将 Spire.Xls.jar 文件作为依赖项添加到您的 Java 程序中。可以从此链接下载 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.xls</artifactId>
        <version>16.9.2</version>
    </dependency>
</dependencies>

Java设置Excel活动工作表

Spire.XLS for Java 提供了 Worksheet.activate() 方法,可以将Excel文件中的任意一个工作表设置为 “活动工作表” 。设置完成后,该工作表将在打开文件时自动显示,无需用户手动切换。具体步骤如下:

  • Java
import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;

public class ActivateWorksheet {
    public static void main(String[] args) {
        // 创建Workbook类的实例
        Workbook workbook = new Workbook();
        // 加载Excel文件
        workbook.loadFromFile("示例.xlsx");

        // 获取第二个工作表
        Worksheet sheet = workbook.getWorksheets().get(1);
        // 将该工作表设置为活动工作表
        sheet.activate();

        // 保存结果文件
        workbook.saveToFile("设置活动工作表.xlsx", ExcelVersion.Version2016);
        workbook.dispose();
    }
}

打开结果文档,Excel 主窗口将显示第二个工作表:

Java设置Excel活动单元格

除了设置活动工作表外,还可以通过调用 CellRange.active() 方法,进一步将该工作表中的某个特定单元格设为当前活动单元格。这样,当用户打开 Excel 文件时,光标会自动定位在该单元格上。具体步骤如下:

  • Java
import com.spire.xls.CellRange;
import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;

public class ActivateCell {
    public static void main(String[] args) {
        // 创建Workbook类的实例
        Workbook workbook = new Workbook();
        // 加载Excel文件
        workbook.loadFromFile("示例.xlsx");

        // 获取第二个工作表
        Worksheet sheet = workbook.getWorksheets().get(1);
        // 将该工作表设置为活动工作表
        sheet.activate();

        // 获取该工作表中的特定单元格
        CellRange cell = sheet.getCellRange("G26");
        // 将该单元格设置为活动单元格
        cell.activate();

        // 保存结果文件
        workbook.saveToFile("设置活动单元格.xlsx", ExcelVersion.Version2016);
        workbook.dispose();
    }
}

打开结果文档,光标将自动定位在第二个工作表的G26单元格:

申请临时 License

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

在 Microsoft Excel 中,每个工作表都相当于一个独立的空间,用于存放不同的数据、项目或分析内容。高效地管理这些工作表,有助于提升导航效率和数据处理能力。通过为工作表重命名,用户可以创建更具意义的标签,使工作表的内容一目了然,便于快速定位所需信息。而通过设置标签颜色,用户还能增强视觉上的分类效果,让不同区域或类别更容易区分。

本文将 介绍如何使用 Python 和 Spire.XLS for Python 库实现对 Excel 工作表名称的修改及标签颜色的设置。

安装 Spire.XLS for Python

本教程需要 Spire.XLS for Python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 Windows 中。

pip install Spire.XLS

如果您不确定如何安装,请参考:如何在 Windows 中安装 Spire.XLS for Pythonn

Python 修改 Excel 工作表名称

Spire.XLS for Python 提供了 Worksheet.Name 属性来修改工作表名称。具体实现步骤如下:

  • Python
from spire.xls import *
from spire.xls.common import *

# 指定输入和输出文件路径
inputFile = "示例1.xlsx"
outputFile = "重命名工作表.xlsx"

# 创建 Workbook 类的实例
workbook = Workbook()
# 加载 Excel 文件
workbook.LoadFromFile(inputFile)

# 重命名第一个工作表
sheet = workbook.Worksheets[0]
sheet.Name = "家庭财产库存清单"

# 重命名第二个工作表
sheet = workbook.Worksheets[1]
sheet.Name = "房间分类列表"

# 保存结果文件
workbook.SaveToFile(outputFile, ExcelVersion.Version2013)
workbook.Dispose()

Python 重命名 Excel 工作表

Python 设置 Excel 工作表标签颜色

Spire.XLS for Python 提供了 Worksheet.TabColor 属性用于设置工作表标签的颜色。具体实现步骤如下:

  • Python
from spire.xls import *
from spire.xls.common import *

# 指定输入和输出文件路径
inputFile = "示例2.xlsx"
outputFile = "设置标签颜色.xlsx"

# 创建 Workbook 类的实例
workbook = Workbook()
# 加载 Excel 文件
workbook.LoadFromFile(inputFile)

# 设置第一个工作表的标签颜色为红色
worksheet = workbook.Worksheets[0]
worksheet.TabColor = Color.get_Red()

# 设置第二个工作表的标签颜色为绿色
worksheet = workbook.Worksheets[1]
worksheet.TabColor = Color.get_Green()

# 设置第三个工作表的标签颜色为浅蓝色
worksheet = workbook.Worksheets[2]
worksheet.TabColor = Color.get_LightBlue()

# 保存结果文件
workbook.SaveToFile(outputFile, ExcelVersion.Version2013)
workbook.Dispose()

Python 设置 Excel 工作表的标签颜色

申请临时 License

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

Word 文档通常包含大量文本内容,为其中的关键内容添加着重号是一种有效的突出显示方式。无论是为了强调重要术语,还是通过样式格式增强文本的清晰度,着重号都能使文档更具可读性和专业性。本文将介绍如何使用 Spire.Doc for Python,通过 Python 代码为 Word 文档中的文本添加着重号,从而提高阅读效率并确保文档格式统一且美观。

安装 Spire.Doc for Python

本教程需要用到 Spire.Doc for Python 和 plum-dispatch v1.7.4。可以通过以下 pip 命令将它们轻松安装到 Windows 中。

pip install Spire.Doc

如果您不确定如何安装,请参考:如何在 Windows 中安装 Spire.Doc for Python

查找 Word 文档中的文本并添加着重号

Spire.Doc for Python 提供了 Document.FindString() 方法用于查找指定文本并获取首个匹配项,以及 Document.FindAllString() 方法用于查找并获取所有匹配项。获取到的文本范围可通过 CharacterFormat.EmphasisMark 属性应用着重号,从而实现精确的文档操作。以下是具体操作步骤:

  • Python
from spire.doc import Document, Emphasis

# 创建一个 Document 对象
doc = Document()
# 加载 Word 文档
doc.LoadFromFile("Sample.docx")

# 查找文本并获取第一个匹配项
# matchingText = doc.FindString("可再生能源", True, True)

# 查找文本并获取所有匹配项
textSelections = doc.FindAllString("可再生能源", False, True)

# 遍历匹配项
for textSelection in textSelections:
    # 获取匹配项为文本范围
    matchingText = textSelection.GetAsOneRange()
    # 设置强调标记
    matchingText.CharacterFormat.EmphasisMark = Emphasis.DotBelow

# 将文档保存为新文件
doc.SaveToFile("output/查找文本添加着重号.docx")
doc.Close()

Python查找Word文档文本并添加着重号

为 Word 文档中的指定段落添加着重号

开发者还可以通过 Section.Paragraphs.get_Item() 方法直接获取 Word 文档中的指定段落,然后找出段落中的所有 TextRange 子对象并通过 TextRange.CharacterFormat.EmphasisMark 属性为其添加着重号,从而实现添加着重号到 Word 文档中的指定段落。以下是操作步骤:

  • Python
from spire.doc import Document, DocumentObjectType, TextRange, Emphasis

# 创建Document对象
doc = Document()
# 载入Word文档
doc.LoadFromFile("Sample.docx")

# 获取文档中的指定段落
para = doc.Sections.get_Item(0).Paragraphs.get_Item(4)

# 遍历段落中的子对象
for i in range(para.ChildObjects.Count):
    # 获取当前子对象
    obj = para.ChildObjects.get_Item(i)
    # 判断当前子对象是否为文本范围
    textRange = obj if isinstance(obj, TextRange) else None
    if textRange is not None:
        # 添加着重号到文本范围
        textRange.CharacterFormat.EmphasisMark = Emphasis.DotBelow


# 保存文档
doc.SaveToFile("output/添加着重号到段落.docx")
doc.Close()

Python添加着重号到Word文档段落

申请临时 License

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

Spire.Presentation for Java 10.4.0 已发布。该版本主要修复了几个在转换 PPT 文档到图片、PDF 和 HTML 时出现的问题。详情请查看以下内容。

问题修复:


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

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

在 Word 文档中为特定文本和段落添加边框是强化关键信息、优化文档结构的有效方式。无论是核心术语还是重要章节,边框设计都能显著提升视觉层次。本文将详解如何通过 Spire.Doc for Python 实现自动化 Word 文档操作,帮助开发者高效地添加边框到 Word 文档段落和文本,提升文档的专业性和可读性,告别繁琐的手动操作。

安装 Spire.Doc for Python

本教程需要 Spire.Doc for Python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 Windows 中。

pip install Spire.Doc

如果您不确定如何安装,请参考:如何在 Windows 中安装 Spire.Doc for Python

用 Python 为 Word 文档中的文本添加边框

在 Word 文档中,为技术术语、公司名称或法律条款等关键信息添加边框,有助于吸引读者注意。通过使用 Spire.Doc for Python,开发者可以利用 Document.FindAllString() 方法定位目标文本,并通过 CharacterFormat.Border.BorderType 属性添加边框。

为 Word 文档中匹配的所有文本添加边框的步骤如下:

  • Python
from spire.doc import Document, BorderStyle, Color

# 创建一个 Document 对象
doc = Document()
doc.LoadFromFile("示例.docx")

# 设置目标文本
target_text = "膳食纤维"
# 创建 TextSelection 对象并查找所有匹配项
text_selections = doc.FindAllString(target_text, False, True)

# 遍历所有文本匹配项
for selection in text_selections:
    text_range = selection.GetAsOneRange()
    # 为文本添加边框
    text_range.CharacterFormat.Border.BorderType = BorderStyle.Double
    # 设置边框颜色
    text_range.CharacterFormat.Border.Color = Color.get_BlueViolet()

# 保存修改后的文档
doc.SaveToFile("output/文本边框.docx")
doc.Close()

Python添加边框到Word文档文本

用 Python 为 Word 文档中的段落添加边框

在合同中的关键条款、报告中的摘要,或论文中的引用内容中,常需要为段落添加边框以起到强调或区分的作用。与文本边框不同,段落边框的添加需要通过段落索引定位目标段落,并使用 Format.Borders.BorderType 属性实现设置。

为 Word 文档中的段落添加边框的步骤如下:

  • Python
from spire.doc import Document, BorderStyle, Color

# 创建一个 Document 对象
doc = Document()
doc.LoadFromFile("示例.docx")

# 获取第4个段落(索引从0开始)
paragraph = doc.Sections.get_Item(0).Paragraphs.get_Item(5)

# 为该段落添加边框
borders = paragraph.Format.Borders
borders.BorderType(BorderStyle.DotDotDash)
borders.Color(Color.get_Blue())

# 保存更新后的文档
doc.SaveToFile("output/段落边框.docx")
doc.Close()

Python添加边框到Word文档段落

申请临时 License

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

Excel 中的切片器是一种交互式过滤工具,可以简化透视表和表格中的数据分析。与传统的下拉菜单不同,切片器提供直观的可点击按钮,每个按钮代表数据集中一个不同的值(例如,地区、产品类别或日期)。使用切片器,用户可以通过单击快速过滤数据集,以专注于特定子集,从而使分析更快、更具视觉直观性。这篇文章将介绍如何使用 Java 和 Spire.XLS for Java 库在 Excel 中添加切片器、修改现有切片器和删除切片器。

安装 Spire.XLS for Java

首先,您需要在 Java 程序中添加 Spire.Xls.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.xls</artifactId>
        <version>16.9.2</version>
    </dependency>
</dependencies>

Java 为 Excel 表格添加切片器

Spire.XLS for Java 提供了 Worksheet.getSlicers().add(IListObject table, String destCellName, int index) 方法,用于为 Excel 工作表中的表格添加切片器。具体步骤如下:

  • Java
import com.spire.xls.*;
import com.spire.xls.core.IListObject;
import com.spire.xls.core.spreadsheet.slicer.*;

public class AddSlicerToTable {
    public static void main(String[] args) {
        // 创建 Workbook 类的对象
        Workbook workbook = new Workbook();

        // 获取第一个工作表
        Worksheet worksheet = workbook.getWorksheets().get(0);

        // 向工作表添加数据
        worksheet.getRange().get("A1").setValue("产品");
        worksheet.getRange().get("A2").setValue("葡萄");
        worksheet.getRange().get("A3").setValue("蓝莓");
        worksheet.getRange().get("A4").setValue("奇异果");
        worksheet.getRange().get("A5").setValue("樱桃");
        worksheet.getRange().get("A6").setValue("葡萄");
        worksheet.getRange().get("A7").setValue("蓝莓");
        worksheet.getRange().get("A8").setValue("奇异果");
        worksheet.getRange().get("A9").setValue("樱桃");

        worksheet.getRange().get("B1").setValue("年份");
        worksheet.getRange().get("B2").setNumberValue(2020);
        worksheet.getRange().get("B3").setNumberValue(2020);
        worksheet.getRange().get("B4").setNumberValue(2020);
        worksheet.getRange().get("B5").setNumberValue(2020);
        worksheet.getRange().get("B6").setNumberValue(2021);
        worksheet.getRange().get("B7").setNumberValue(2021);
        worksheet.getRange().get("B8").setNumberValue(2021);
        worksheet.getRange().get("B9").setNumberValue(2021);

        worksheet.getRange().get("C1").setValue("销售额");
        worksheet.getRange().get("C2").setNumberValue(50);
        worksheet.getRange().get("C3").setNumberValue(60);
        worksheet.getRange().get("C4").setNumberValue(70);
        worksheet.getRange().get("C5").setNumberValue(80);
        worksheet.getRange().get("C6").setNumberValue(90);
        worksheet.getRange().get("C7").setNumberValue(100);
        worksheet.getRange().get("C8").setNumberValue(110);
        worksheet.getRange().get("C9").setNumberValue(120);

        // 创建表格
        IListObject table = worksheet.getListObjects().create("产品销售数据", worksheet.getRange().get("A1:C9"));

        // 向单元格 "A11" 添加切片器
        XlsSlicerCollection slicers = worksheet.getSlicers();
        int index = slicers.add(table, "A11", 0);

        // 设置切片器的名称和样式
        XlsSlicer slicer = slicers.get(index);
        slicer.setName("产品");
        slicer.setStyleType(SlicerStyleType.SlicerStyleLight1);

        // 保存结果文件
        workbook.saveToFile("表格切片器.xlsx", ExcelVersion.Version2013);
        workbook.dispose();
    }
}

Java为Excel表格添加切片器

Java 为 Excel 数据透视表添加切片器

除了给 Excel 中的表格添加切片器,Spire.XLS for Java 还提供了 Worksheet.getSlicers().add(IPivotTable pivot, String destCellName, int baseFieldIndex) 方法,支持为数据透视表添加切片器。具体步骤如下:

  • Java
import com.spire.xls.*;
import com.spire.xls.core.IPivotField;
import com.spire.xls.core.spreadsheet.slicer.*;

public class AddSlicerToPivotTable {
    public static void main(String[] args) {
        // 创建 Workbook 类的对象
        Workbook workbook = new Workbook();

        // 获取第一个工作表
        Worksheet worksheet = workbook.getWorksheets().get(0);

        // 向工作表添加数据
        worksheet.getRange().get("A1").setValue("产品");
        worksheet.getRange().get("A2").setValue("葡萄");
        worksheet.getRange().get("A3").setValue("蓝莓");
        worksheet.getRange().get("A4").setValue("奇异果");
        worksheet.getRange().get("A5").setValue("樱桃");
        worksheet.getRange().get("A6").setValue("葡萄");
        worksheet.getRange().get("A7").setValue("蓝莓");
        worksheet.getRange().get("A8").setValue("奇异果");
        worksheet.getRange().get("A9").setValue("樱桃");

        worksheet.getRange().get("B1").setValue("年份");
        worksheet.getRange().get("B2").setNumberValue(2020);
        worksheet.getRange().get("B3").setNumberValue(2020);
        worksheet.getRange().get("B4").setNumberValue(2020);
        worksheet.getRange().get("B5").setNumberValue(2020);
        worksheet.getRange().get("B6").setNumberValue(2021);
        worksheet.getRange().get("B7").setNumberValue(2021);
        worksheet.getRange().get("B8").setNumberValue(2021);
        worksheet.getRange().get("B9").setNumberValue(2021);

        worksheet.getRange().get("C1").setValue("销售额");
        worksheet.getRange().get("C2").setNumberValue(50);
        worksheet.getRange().get("C3").setNumberValue(60);
        worksheet.getRange().get("C4").setNumberValue(70);
        worksheet.getRange().get("C5").setNumberValue(80);
        worksheet.getRange().get("C6").setNumberValue(90);
        worksheet.getRange().get("C7").setNumberValue(100);
        worksheet.getRange().get("C8").setNumberValue(110);
        worksheet.getRange().get("C9").setNumberValue(120);

        // 创建数据透视缓存
        CellRange dataRange = worksheet.getRange().get("A1:C9");
        PivotCache cache = workbook.getPivotCaches().add(dataRange);

        // 创建数据透视表
        PivotTable pt = worksheet.getPivotTables().add("产品销售数据", worksheet.getRange().get("A12"), cache);

        // 拖动字段到行和列区域
        IPivotField pf = pt.getPivotFields().get("产品");
        pf.setAxis(AxisTypes.Row);
        IPivotField pf2 = pt.getPivotFields().get("年份");
        pf2.setAxis(AxisTypes.Column);

        // 拖动字段到数据区域
        pt.getDataFields().add(pt.getPivotFields().get("销售额"), "求和项:销售额", SubtotalTypes.Sum);

        // 设置数据透视表样式
        pt.setBuiltInStyle(PivotBuiltInStyles.PivotStyleMedium10);

        // 计算数据透视表数据
        pt.calculateData();

        // 为数据透视表添加切片器
        XlsSlicerCollection slicers = worksheet.getSlicers();
        int index_1 = slicers.add(pt, "F12", 0);

        // 设置切片器的名称、宽度、高度和样式
        XlsSlicer slicer = slicers.get(index_1);
        slicer.setName("产品");
        slicer.setWidth(100);
        slicer.setHeight(120);
        slicer.setStyleType(SlicerStyleType.SlicerStyleLight2);

        // 设置切片器的交叉过滤类型
        XlsSlicerCache slicerCache = slicer.getSlicerCache();
        slicerCache.setCrossFilterType(SlicerCacheCrossFilterType.ShowItemsWithNoData);

        // 再次计算数据透视表数据
        pt.calculateData();

        // 保存结果文件
        workbook.saveToFile("数据透视表切片器.xlsx", ExcelVersion.Version2013);
        workbook.dispose();
    }
}

Java为Excel数据透视表添加切片器

Java 修改 Excel 中的切片器

你可以使用 XlsSlicer 类下的对应方法来修改切片器的属性,如样式、名称、标题等。具体步骤如下:

  • Java
import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;
import com.spire.xls.core.spreadsheet.slicer.*;

public class UpdateSlicer {
    public static void main(String[] args) {
        // 创建 Workbook 类的对象
        Workbook workbook = new Workbook();

        // 加载 Excel 文件
        workbook.loadFromFile("表格切片器.xlsx");

        // 获取第一个工作表
        Worksheet worksheet = workbook.getWorksheets().get(0);

        // 获取工作表中的第一个切片器
        XlsSlicer slicer = worksheet.getSlicers().get(0);

        // 修改切片器的样式、名称和标题
        slicer.setStyleType(SlicerStyleType.SlicerStyleDark4);
        slicer.setName("切片器");
        slicer.setCaption("切片器");

        // 修改切片器的交叉过滤类型
        XlsSlicerCache slicerCache = slicer.getSlicerCache();
        slicerCache.setCrossFilterType(SlicerCacheCrossFilterType.ShowItemsWithDataAtTop);

        // 在切片器中取消选择一个项目
        XlsSlicerCacheItemCollection slicerCacheItems = slicerCache.getSlicerCacheItems();
        XlsSlicerCacheItem xlsSlicerCacheItem = slicerCacheItems.get(0);
        xlsSlicerCacheItem.isSelected(false);

        // 保存结果文件
        workbook.saveToFile("修改切片器.xlsx", ExcelVersion.Version2013);
        workbook.dispose();
    }
}

Java修改Excel中的切片器

Java 从 Excel 中删除切片器

你可以使用 Worksheet.getSlicers().removeAt() 方法从 Excel 工作表中删除特定切片器,也可以使用 Worksheet.getSlicers().clear() 方法一次性删除所有切片器。具体步骤如下:

  • Java
import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;

public class RemoveSlicer {
    public static void main(String[] args) {
        // 创建 Workbook 类的对象
        Workbook workbook = new Workbook();

        // 加载 Excel 文件
        workbook.loadFromFile("表格切片器.xlsx");

        // 获取第一个工作表
        Worksheet worksheet = workbook.getWorksheets().get(0);

        // 删除第一个切片器
        worksheet.getSlicers().removeAt(0);

        // 或删除所有切片器
        // worksheet.getSlicers().clear();

        // 保存结果文件
        workbook.saveToFile("删除切片器.xlsx", ExcelVersion.Version2013);
        workbook.dispose();
    }
}

Java从Excel中删除切片器

申请临时 License

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

在当今数据驱动的时代,将数据高效地导入 Excel 文件已成为数据处理流程中的重要环节。凭借其强大的生态系统,Python 不仅能够通过自动化处理替代低效的人工录入,显著降低错误率,还能无缝支持大规模数据集的批量操作。通过整合 Python 对结构化与非结构化数据源的解析能力,以及 Spire.XLS for Python 库提供的 Excel 文件读写接口与格式控制功能,开发者可构建兼具高扩展性与强一致性的自动化数据集成方案。本文将详细介绍如何利用 Spire.XLS for Python 实现用 Python 高效导入数据到 Excel 文件。

安装 Spire.XLS for Python

此教程需要 Spire.XLS for Python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 Windows 中。

pip install Spire.XLS

如果您不确定如何安装,请参考: 如何在 Windows 中安装 Spire.XLS for Python

使用 Spire.XLS for Python 将数据写入 Excel 文件

Spire.XLS for Python 是一款支持 Excel 文件读取、写入、编辑与转换的文档处理库。通过该库,开发者可以轻松实现将数据写入 Excel 工作表、应用格式样式以及将工作簿保存为文件等操作。

在将数据写入 Excel 工作表之前,我们可以使用 Python 提供的多种组件,如 json、xml.etree.ElementTree 和 BeautifulSoup,从不同的文件格式中读取和处理数据,包括 CSV、JSON、XML 和 HTML。这些库有助于将原始或半结构化数据转换为列表、字典或数据框架等更易于在 Python 中处理的结构。

在提取和结构化数据后,我们可以使用 Spire.XLS for Python 将其写入 Excel 工作簿。该库提供了对工作表创建、单元格数据输入、格式化以及导出 Excel 兼容格式的文件等操作的精确控制能力。

使用 Spire.XLS for Python 将数据写入 Excel 文件的操作步骤:

将 CSV 数据导入 Excel 工作表

在数据组织与准备的过程中,将 CSV 文件数据导入 Excel 是一项基础操作。通过 Spire.XLS for Python 提供的 Workbook.LoadFromFile(filePath: str, separator: str) 方法,我们可以将结构化数据从 CSV 文件便捷地加载,并可转换为格式规范的 Excel 工作簿。同时,我们还可以通过指定合适的分隔符使用该方法加载普通文本文件中的表格。载入表格数据后,我们还可以对单元格格式、表格样式等进行设置,从而确保数据整洁可用,便于后续分析或生成报表。

以下是操作步骤:

  • Python
from spire.xls import Workbook, FileFormat, BuiltInStyles

# 创建一个Workbook对象
workbook = Workbook()

# 从CSV或文本文件加载表格数据
workbook.LoadFromFile("Sample.csv", ",")
# 也可以加载文本文件:workbook.LoadFromFile("Sample.txt", "\t")

# 获取第一个工作表
sheet = workbook.Worksheets.get_Item(0)
# 格式化表格
sheet.Rows.get_Item(0).BuiltInStyle = BuiltInStyles.Heading1
for i in range(1, sheet.Rows.Count):
    sheet.Rows.get_Item(i).BuiltInStyle = BuiltInStyles.Accent1_20
for j in range(sheet.Columns.Count):
    sheet.AutoFitColumn(j + 1)

# 保存工作簿
workbook.SaveToFile("output/CSV导入Excel.xlsx", FileFormat.Version2016)
workbook.Dispose()

用Spire.XLS for Python读取CSV数据写入Excel工作表

跨 Excel 文件复制数据与工作表

处理多个 Excel 文件时,常需跨工作簿复制数据或整张工作表。借助 Spire.XLS for Python 的 Workbook 和 Worksheet 类,我们可通过编程实现此类操作,从而整合不同来源的数据,并且可以保留原始格式、公式及数据结构。

以下是操作步骤:

  • Python
from spire.xls import Workbook, FileFormat

# 创建一个工作簿对象并加载Excel文件
workbook = Workbook()
workbook.LoadFromFile("Sample.xlsx")

# 创建另一个工作簿对象并清空其工作表
newWorkbook = Workbook()
newWorkbook.Worksheets.Clear()

# 从原工作簿读取数据并插入到新工作簿
for i in range(workbook.Worksheets.get_Item(0).Rows.Count):
    for j in range(workbook.Worksheets.get_Item(0).Columns.Count):
        # 添加一个新工作表
        sheet = newWorkbook.Worksheets.Add(workbook.Worksheets.get_Item(0).Name)
        # 写入数据
        sheet.Range.get_Item(i + 1, j + 1).Value = workbook.Worksheets.get_Item(0).Range.get_Item(i + 1, j + 1).Value

# 将原工作簿的所有工作表复制到新工作簿
for i in range(workbook.Worksheets.Count):
    # 添加一个新工作表(名称后加"-Copy")
    newSheet = newWorkbook.Worksheets.Add(workbook.Worksheets.get_Item(i).Name + "-Copy")
    # 将原工作表内容复制到新工作表
    newSheet.CopyFrom(workbook.Worksheets.get_Item(i))

# 保存新工作簿
newWorkbook.SaveToFile("output/Excel导入Excel.xlsx", FileFormat.Version2016)
workbook.Dispose()
newWorkbook.Dispose()

用Spire.XLS 在Excel文件之间复制数据和工作表

将 JSON 数据导入 Excel 工作表

作为 API 和现代 Web 应用中常用的结构化数据格式,JSON 文件可通过 Python 内置的 json 模块进行解析,提取表格形式的数据。结合 Spire.XLS for Python 库,我们可以将解析后的数据写入 Excel 工作表,并通过格式化功能优化展示效果,便于数据分析、可视化或协作共享。

以下代码示例演示了如何导入 JSON 数据到 Excel 工作表:

  • Python
from spire.xls import Workbook, FileFormat, BuiltInStyles
import json

# 加载JSON数据
with open("Sample.json", "r", encoding="utf-8") as f:
    jsonData = json.load(f)
headers = list(jsonData[0].keys())
rows = [[str(item[key]) for key in headers] for item in jsonData]

# 创建工作簿实例
workbook = Workbook()
# 清除默认工作表并添加新工作表
workbook.Worksheets.Clear()
sheet = workbook.Worksheets.Add("JSON数据")

# 将表头和行数据写入工作表
for col, header in enumerate(headers):
    sheet.Range[1, col + 1].Value = header
for row_idx, row_data in enumerate(rows):
    for col_idx, value in enumerate(row_data):
        sheet.Range[row_idx + 2, col_idx + 1].Value = value

# 应用样式并自动调整列宽
sheet.Rows[0].BuiltInStyle = BuiltInStyles.Heading2
for row in range(1, sheet.Rows.Count):
    sheet.Rows[row].BuiltInStyle = BuiltInStyles.Accent2_40
for col in range(sheet.Columns.Count):
    sheet.AutoFitColumn(col + 1)

# 保存Excel文件
workbook.SaveToFile("output/JSON导入Excel.xlsx", FileFormat.Version2016)
workbook.Dispose()

用Python导入JSON数据到Excel

将 XML 数据导入 Excel 工作表

XML 作为企业系统和数据流中广泛使用的层级数据格式,可通过 Python 的 xml.etree.ElementTree 模块解析并提取元素与属性。Spire.XLS for Python 支持将提取的层级数据按行列结构写入 Excel 工作表,将复杂的层次化内容转换为直观的二维表格,便于执行筛选、分析等操作。

以下代码示例演示了如何将 XML 数据导入到 Excel 工作表:

  • Python
from spire.xls import Workbook, FileFormat, BuiltInStyles
import xml.etree.ElementTree as ET

# 加载XML数据
tree = ET.parse("Sample.xml")
root = tree.getroot()
first_order = root.find("Record")
# 提取表头
headers = [elem.tag.replace('_', ' ').title() for elem in first_order]
# 提取所有记录数据
rows = [
    [order.find(tag.lower().replace(" ", "_")).text or "" for tag in headers]
    for order in root.findall("Record")  # 遍历所有Record节点
]

# 使用Spire.XLS创建Excel工作簿
workbook = Workbook()
workbook.Worksheets.Clear()
sheet = workbook.Worksheets.Add("XML数据")

# 写入表头和数据
for col, header in enumerate(headers):
    sheet.Range[1, col + 1].Value = header

for row_idx, row_data in enumerate(rows):
    for col_idx, value in enumerate(row_data):
        sheet.Range[row_idx + 2, col_idx + 1].Value = value

# 应用样式和自动调整列宽
sheet.Rows[0].BuiltInStyle = BuiltInStyles.Heading3
for row in range(1, sheet.Rows.Count):
    sheet.Rows[row].BuiltInStyle = BuiltInStyles.Accent3_40
for col in range(sheet.Columns.Count):
    sheet.AutoFitColumn(col + 1)

# 保存Excel文件
workbook.SaveToFile("output/XML导入Excel.xlsx", FileFormat.Version2016)
workbook.Dispose()

用Python读取XML数据导入Excel

将数据库数据导入 Excel 工作表

在报表生成和商业智能场景中,将数据库记录导入 Excel 是常见需求。通过 Python 的 SQLite3、PyODBC 或 PyMySQL 等数据库连接库,可建立与各类关系型数据库的连接并执行 SQL 查询获取记录。利用 Spire.XLS 的 Workbook 类和 Worksheet.Range.GetItem().Value 属性,我们可以将关系型数据集转换为可读性强且便于移植的 Excel 工作簿,从而完美适配生成报告、仪表盘或数据归档等应用场景。

以下代码示例演示如何从 SQLite 数据库提取记录并生成 Excel 工作表:

  • Python
import sqlite3
from spire.xls import Workbook, FileFormat, BuiltInStyles

# 连接到SQLite数据库
conn = sqlite3.connect("Sample.db")
cursor = conn.cursor()

# 获取数据库中所有表名
cursor.execute("SELECT name FROM sqlite_master WHERE type='table';")
tables = [row[0] for row in cursor.fetchall()]

# 创建Excel工作簿
workbook = Workbook()
workbook.Worksheets.Clear()  # 清除默认工作表

# 遍历每个表并导出到工作表
for table_name in tables:
    # 从表中获取所有数据
    cursor.execute(f"SELECT * FROM {table_name}")
    rows = cursor.fetchall()
    # 获取列名
    column_names = [desc[0] for desc in cursor.description]
    # 添加以表名命名的新工作表
    sheet = workbook.Worksheets.Add(table_name)

    # 写入表头行
    for col_index, column_name in enumerate(column_names):
        cell = sheet.Range.get_Item(1, col_index + 1)
        cell.Value = str(column_name)

    # 写入数据行
    for row_index, row in enumerate(rows, start=2):
        for col_index, value in enumerate(row):
            sheet.Range.get_Item(row_index, col_index + 1).Value = str(value)

    # 应用样式
    sheet.Rows.get_Item(0).BuiltInStyle = BuiltInStyles.Heading4
    for i in range(1, sheet.Rows.Count):
        sheet.Rows.get_Item(i).BuiltInStyle = BuiltInStyles.Accent4_20
    for j in range(sheet.Columns.Count):
        sheet.AutoFitColumn(j + 1)

# 关闭数据库连接
conn.close()

# 保存Excel文件
workbook.SaveToFile("output/SQLDB导入Excel.xlsx", FileFormat.Version2016)
workbook.Dispose()

用Python导入数据库数据到Excel

将 HTML 表格数据导入 Excel 工作表

网页中呈现的 HTML 表格数据,可通过 Python 的 BeautifulSoup 库进行抓取和结构化处理。结合 Spire.XLS for Python,我们可以将这些网络数据源写入 Excel 工作表,并对表格样式与排版结构等进行自定义,生成专业级 Excel 表格。

以下代码示例演示如何从 HTML 提取表格数据并写入 Excel 工作表:

  • Python
from bs4 import BeautifulSoup
from spire.xls import Workbook, FileFormat, BuiltInStyles

# 读取HTML文件
with open("Sample.html", "r", encoding="utf-8") as f:
    soup = BeautifulSoup(f, "html.parser")

# 查找表格
table = soup.find("table")
rows = table.find_all("tr")

# 将表格数据提取为二维列表
data = []
for row in rows:
    cells = row.find_all(["th", "td"])
    data.append([cell.get_text(strip=True) for cell in cells])

# 创建新的Excel工作簿
workbook = Workbook()
# 清除默认工作表并新建工作表
workbook.Worksheets.Clear()
sheet = workbook.Worksheets.Add("HTML数据")

# 遍历数据
for row_index, row in enumerate(data, start=1):
    for col_index, cell_value in enumerate(row, start=1):
        # 将表格数据写入工作表的单元格
        sheet.Range.get_Item(row_index, col_index).Value = str(cell_value)

# 格式化表格
sheet.Rows.get_Item(0).BuiltInStyle = BuiltInStyles.Heading2
for i in range(1, sheet.Rows.Count):
    sheet.Rows.get_Item(i).BuiltInStyle = BuiltInStyles.Accent4_60
for j in range(sheet.Columns.Count):
    sheet.AutoFitColumn(j + 1)

# 保存Excel文件
workbook.SaveToFile("output/HTML导入Excel.xlsx", FileFormat.Version2016)
workbook.Dispose()

用Python提取HTML表格数据导入Excel

申请临时 License

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

Spire.Presentation 10.4.2 现已正式发布。最新版本增强了从 Presentation 到 SVG 和 PDF 的转换功能。此外,本次更新还成功修复了一些已知的问题,例如修改 PPT 图表中数据后,结果不正确的问题。更多详情请查阅下列内容。

问题修复:


获取 Spire.Presentation 10.4.2,请点击:

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

Spire.Barcode for Python 7.2.12 现已发布。 该版本新增支持 Linux ARM 平台,并且还升级了 SkiaSharp 版本至 3.116.1。详情请查阅以下内容。

新功能:


获取 Spire.Barcode for Python 7.2.12 请点击:

https://www.e-iceblue.cn/Downloads/Spire-Barcode-Python.html

在现代 Web 开发中,动态生成 Word 文档的需求日益增长,无论是用于报告导出、合同生成,还是数据归档。借助 Spire.Doc for JavaScript,开发者可以直接在 React 应用中轻松实现专业级 Word 文档的创建与编辑。本文将详细介绍如何通过代码添加标题、段落、图片、列表和表格,并自定义样式,帮助您快速掌握从 React 前端生成标准化文档的核心技巧。

安装 Spire.Doc for JavaScript

要在 React 应用程序中创建 Word 文档,首先需要通过官网下载 Spire.Doc for JavaScript,或者通过以下 npm 命令安装:

npm i spire.office

下载的产品包整合了Spire.Doc for JavaScript,Spire.XLS for JavaScript,Spire.PDF for JavaScript,Spire.Presentation for JavaScript,使用Spire.Doc for JavaScript的功能需将相应( spire.doc.js,Spire.Doc.Wasm.zip,spire.common.js,Spire.Common.Wasm.zip,_framework 文件复制到项目的 public 文件夹中。同时为了确保文本渲染,相关使用字体文件可自定义路径添加。以下示例中,字体添加路径为:public\static\font。

更多详细信息,请参阅文档:如何在 React 项目中集成 Spire.Doc for JavaScript

在 React 中添加标题、小标题和段落到Word

要为 Word 文档添加标题、小标题和段落,您主要使用 Spire.Doc for JavaScript 提供的 Document 和 Section 类。AddParagraph() 方法用于创建新段落,而 AppendText() 方法则允许您在段落中插入文本。

段落可以通过内置样式(如 Title、Heading1-4)进行格式化,以确保文档结构统一;也可以通过自定义样式设置特定字体、字号和颜色,实现个性化的文档设计。

在 React 中向 Word 文档添加标题、小标题和段落的步骤如下:

import React, { useState, useEffect } from 'react';

function App() {
  const [wasmModule, setWasmModule] = useState(null);
  // 加载Spire.Doc
  useEffect(() => {
    (async () => {
      try {
        const publicUrl = process.env.PUBLIC_URL || '';
        const spireModule = await import(/* webpackIgnore: true */ `${publicUrl}/spire.doc.js`);
        const rawModule = spireModule.default || spireModule;
        window.wasmModule = typeof rawModule === 'function'
          ? await rawModule({ locateFile: p => p.endsWith('.wasm') ? `${publicUrl}/${p}` : p })
          : rawModule;
        setWasmModule(window.wasmModule);
      } catch (error) {
        console.error('加载 spire.doc.js WASM 模块失败:', error);
      }
    })();
  }, []);

  // 向 Word 添加文本的函数
  const AddText = async () => {
    const wasmModule = window.wasmModule.spiredoc;
    if (wasmModule) {
      // 加载字体
      await window.spire.FetchFileToVFS('simsun.ttc', '/Library/Fonts/', `${process.env.PUBLIC_URL}/static/font/`);

      // 创建一个新文档
      const doc = new wasmModule.Document();

      // 添加一个章节
      let section = doc.AddSection();

      // 设置页面边距
      section.PageSetup.Margins.All = 60;

      // 添加标题段落
      let title_para = section.AddParagraph();
      let text_range = title_para.AppendText('这是标题');
      title_para.ApplyStyle({ builtinStyle: wasmModule.BuiltinStyle.Title });
      text_range.CharacterFormat.FontName = "宋体";

      // 添加小标题段落
      let heading_one = section.AddParagraph();
      text_range = heading_one.AppendText('这是标题1');
      heading_one.ApplyStyle({ builtinStyle: wasmModule.BuiltinStyle.Heading1 });
      text_range.CharacterFormat.FontName = "宋体";

      let heading_two = section.AddParagraph();
      text_range = heading_two.AppendText('这是标题2');
      heading_two.ApplyStyle({ builtinStyle: wasmModule.BuiltinStyle.Heading2 });
      text_range.CharacterFormat.FontName = "宋体";

      let heading_three = section.AddParagraph();
      text_range = heading_three.AppendText('这是标题3');
      heading_three.ApplyStyle({ builtinStyle: wasmModule.BuiltinStyle.Heading3 });
      text_range.CharacterFormat.FontName = "宋体";

      let heading_four = section.AddParagraph();
      text_range = heading_four.AppendText('这是标题4');
      heading_four.ApplyStyle({ builtinStyle: wasmModule.BuiltinStyle.Heading4 });
      text_range.CharacterFormat.FontName = "宋体";

      // 添加普通段落
      let normal_para = section.AddParagraph();
      normal_para.AppendText('这是一个段落。');

      // 创建段落样式,指定字体名称、字体大小和文本颜色
      let paragraph_style = new wasmModule.ParagraphStyle(doc);
      paragraph_style.Name = 'newStyle';
      paragraph_style.CharacterFormat.FontName = '宋体';
      paragraph_style.CharacterFormat.FontSize = 13;
      paragraph_style.CharacterFormat.TextColor = wasmModule.Color.get_Blue();

      // 将样式添加到文档
      doc.Styles.Add(paragraph_style);

      // 将样式应用于段落
      normal_para.ApplyStyle(paragraph_style.Name);

      // 保存文档
      const outputFileName = 'output.docx';
      doc.SaveToFile({ fileName: outputFileName, fileFormat: wasmModule.FileFormat.Docx2013 });

      const modifiedFileArray = window.dotnetRuntime.Module.FS.readFile(outputFileName);
      const modifiedFile = new Blob([modifiedFileArray], { type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' });

      // 创建下载链接
      const url = URL.createObjectURL(modifiedFile);
      const a = document.createElement('a');
      a.href = url;
      a.download = outputFileName;
      document.body.appendChild(a);
      a.click();
      document.body.removeChild(a);
      URL.revokeObjectURL(url);

	  // 清理资源 
      doc.Dispose();
    }

  };

  return (
    <div style={{ textAlign: 'center', height: '300px' }}>
      <h1>在 React 中向 Word 文档添加文本</h1>
      <button onClick={AddText} disabled={!wasmModule}>
        生成
      </button>
    </div>
  );
}

export default App;

运行代码启动 React 应用(访问 localhost:3000)。点击“生成”按钮后,系统将弹出“另存为”窗口,提示您选择文件夹保存输出的 Word 文档。

在 React 中创建 Word

下图展示了生成的 Word 文件截图,其中包含一个标题、多个层级标题和一个普通段落:

在 React 中添加文本到 Word

在 React 中添加图片到 Word

向 Word 文档插入图片需要使用 AppendPicture() 方法,该方法允许您将图片添加到特定段落。操作前需先将图片文件加载至虚拟文件系统(VFS),确保图片可被正常插入。

在 React 中向 Word 文档添加图片的步骤:

import React, { useState, useEffect } from 'react';

function App() {
  const [wasmModule, setWasmModule] = useState(null);
  // 加载Spire.Doc
  useEffect(() => {
    (async () => {
      try {
        const publicUrl = process.env.PUBLIC_URL || '';
        const spireModule = await import(/* webpackIgnore: true */ `${publicUrl}/spire.doc.js`);
        const rawModule = spireModule.default || spireModule;
        window.wasmModule = typeof rawModule === 'function'
          ? await rawModule({ locateFile: p => p.endsWith('.wasm') ? `${publicUrl}/${p}` : p })
          : rawModule;
        setWasmModule(window.wasmModule);
      } catch (error) {
        console.error('加载 spire.doc.js WASM 模块失败:', error);
      }
    })();
  }, []);

  // 向 Word 添加图片的函数
  const AddImage  = async () => {
    const wasmModule = window.wasmModule.spiredoc;
    if (wasmModule) {
      // 加载字体
      await window.spire.FetchFileToVFS('simsun.ttc', '/Library/Fonts/', `${process.env.PUBLIC_URL}/static/font/`);

      // 将图像文件加载到虚拟文件系统 (VFS)
      const inputImageFile = 'logo.png';
      await window.spire.FetchFileToVFS(inputImageFile, '', `${process.env.PUBLIC_URL}/static/data/`);

      // 创建一个新文档
      const doc = new wasmModule.Document();

      // 添加一个章节
      let section = doc.AddSection();

      // 设置页面边距
      section.PageSetup.Margins.All = 60;

      // 添加段落 
      let image_para = section.AddParagraph();

      // 向段落中添加图像
      image_para.AppendPicture({imgFile: inputImageFile});

      // 保存文档
      const outputFileName = 'output.docx';
      doc.SaveToFile({fileName: outputFileName, fileFormat: wasmModule.FileFormat.Docx2013});

      const modifiedFileArray = window.dotnetRuntime.Module.FS.readFile(outputFileName);
      const modifiedFile = new Blob([modifiedFileArray], { type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' });

      // 创建下载链接
      const url = URL.createObjectURL(modifiedFile);
      const a = document.createElement('a');
      a.href = url;
      a.download = outputFileName;
      document.body.appendChild(a);
      a.click();
      document.body.removeChild(a);
      URL.revokeObjectURL(url);

      // 清理资源 
      doc.Dispose();

    }

  };

  return (
    <div style={{ textAlign: 'center', height: '300px' }}>
      <h1>在 React 中向 Word 文档添加图片</h1>
      <button onClick={AddImage} disabled={!wasmModule}>
        生成
      </button>
    </div>
  );
}

export default App;

在 React 中添加图片到 Word

在 React 中添加列表到 Word

要在 Word 文档中创建列表,首先可以使用 ListStyle 类定义列表的外观,例如项目符号或编号格式。然后通过 ApplyStyle() 方法将定义好的列表样式应用到段落,从而确保多个列表项保持统一的格式样式。

在 React 中为 Word 文档添加列表的操作步骤:

import React, { useState, useEffect } from 'react';

function App() {
  const [wasmModule, setWasmModule] = useState(null);
  // 加载Spire.Doc
  useEffect(() => {
    (async () => {
      try {
        const publicUrl = process.env.PUBLIC_URL || '';
        const spireModule = await import(/* webpackIgnore: true */ `${publicUrl}/spire.doc.js`);
        const rawModule = spireModule.default || spireModule;
        window.wasmModule = typeof rawModule === 'function'
          ? await rawModule({ locateFile: p => p.endsWith('.wasm') ? `${publicUrl}/${p}` : p })
          : rawModule;
        setWasmModule(window.wasmModule);
      } catch (error) {
        console.error('加载 spire.doc.js WASM 模块失败:', error);
      }
    })();
  }, []);

  // 向 Word 添加列表的函数
  const AddList = async () => {
    const wasmModule = window.wasmModule.spiredoc;
    if (wasmModule) {
      // 加载字体
      await window.spire.FetchFileToVFS('simsun.ttc', '/Library/Fonts/', `${process.env.PUBLIC_URL}/static/font/`);

      // 创建一个新文档
      const doc = new wasmModule.Document();

      // 添加一个章节
      let section = doc.AddSection();

      // 设置页面边距
      section.PageSetup.Margins.All = 60;

      // 定义项目符号列表样式
      let list_style = doc.Styles.Add({ listType: wasmModule.ListType.Bulleted, name: "bulletedList" });
      list_style.ListRef.Levels.get_Item(0).BulletCharacter = '\u00B7';
      list_style.ListRef.Levels.get_Item(0).CharacterFormat.FontName = 'Symbol';
      list_style.ListRef.Levels.get_Item(0).CharacterFormat.FontSize = 14;
      list_style.ListRef.Levels.get_Item(0).TextPosition = 20;

      // 添加标题段落
      let paragraph = section.AddParagraph();
      let text_range = paragraph.AppendText('水果:');
      paragraph.Format.AfterSpacing = 5;
      text_range.CharacterFormat.FontName = '宋体';
      text_range.CharacterFormat.FontSize = 14;

      // 向项目符号列表添加项目
      const fruits = ['苹果', '香蕉', '西瓜', '芒果'];
      fruits.forEach(fruit => {
        paragraph = section.AddParagraph();
        let text_range = paragraph.AppendText(fruit);
        paragraph.ListFormat.ApplyStyle("bulletedList");
        paragraph.ListFormat.ListLevelNumber = 0;
        text_range.CharacterFormat.FontName = '宋体';
        text_range.CharacterFormat.FontSize = 14;
      });

      // 保存文档
      const outputFileName = 'output.docx';
      doc.SaveToFile({ fileName: outputFileName, fileFormat: wasmModule.FileFormat.Docx2013 });

      const modifiedFileArray = window.dotnetRuntime.Module.FS.readFile(outputFileName);
      const modifiedFile = new Blob([modifiedFileArray], { type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' });

      // 创建下载链接
      const url = URL.createObjectURL(modifiedFile);
      const a = document.createElement('a');
      a.href = url;
      a.download = outputFileName;
      document.body.appendChild(a);
      a.click();
      document.body.removeChild(a);
      URL.revokeObjectURL(url);

      // 清理资源 
      doc.Dispose();

    }

  };

  return (
    <div style={{ textAlign: 'center', height: '300px' }}>
      <h1>在 React 中向 Word 添加列表</h1>
      <button onClick={AddList} disabled={!wasmModule}>
        生成
      </button>
    </div>
  );
}

export default App;

在 React 中添加列表到 Word

在 React 中添加表格到 Word

创建表格需使用 AddTable() 方法,并通过 ResetCells() 指定行列数。表格创建后,可结合 AddParagraph() 和 AppendText() 方法为单元格添加文本内容。使用 AutoFit() 方法可自动根据内容调整表格布局,确保数据呈现整洁有序。

在 React 中实现 Word 表格添加的步骤:

import React, { useState, useEffect } from 'react';

function App() {
  const [wasmModule, setWasmModule] = useState(null);
  // 加载Spire.Doc
  useEffect(() => {
    (async () => {
      try {
        const publicUrl = process.env.PUBLIC_URL || '';
        const spireModule = await import(/* webpackIgnore: true */ `${publicUrl}/spire.doc.js`);
        const rawModule = spireModule.default || spireModule;
        window.wasmModule = typeof rawModule === 'function'
          ? await rawModule({ locateFile: p => p.endsWith('.wasm') ? `${publicUrl}/${p}` : p })
          : rawModule;
        setWasmModule(window.wasmModule);
      } catch (error) {
        console.error('加载 spire.doc.js WASM 模块失败:', error);
      }
    })();
  }, []);

  // 向 Word 文档添加表格
  const AddTable = async () => {
    const wasmModule = window.wasmModule.spiredoc;
    if (wasmModule) {
      // 加载字体
      await window.spire.FetchFileToVFS('simsun.ttc', '/Library/Fonts/', `${process.env.PUBLIC_URL}/static/font/`);

      // 创建一个新文档
      const doc = new wasmModule.Document();

      // 添加一个章节
      let section = doc.AddSection();

      // 设置页面边距
      section.PageSetup.Margins.All = 60;

      // 定义表格数据
      let data =
        [
          ['产品', '单价', '数量', '小计'],
          ['A', '290', '120', '34800'],
          ['B', '350', '110', '38500'],
          ['C', '680', '140', '95200'],
        ];

      // 添加表格
      let table = section.AddTable({ showBorder: true });

      // 设置行数和列数
      table.ResetCells(data.length, data[0].length);

      // 将数据写入单元格
      for (let r = 0; r < data.length; r++) {
        let data_row = table.Rows.get_Item(r);
        data_row.Height = 20;
        data_row.HeightType = wasmModule.TableRowHeightType.Exactly;
        data_row.RowFormat.BackColor = wasmModule.Color.Empty();
        for (let c = 0; c < data[r].length; c++) {

          let cell = data_row.Cells.get_Item(c);
          cell.CellFormat.VerticalAlignment = wasmModule.VerticalAlignment.Middle;
          let text_range = cell.AddParagraph().AppendText(data[r][c]);
          text_range.CharacterFormat.FontName = '宋体';
          text_range.CharacterFormat.FontSize = 14;
        }
      }

      // 自动调整表格大小以适应单元格内容
      table.AutoFit(wasmModule.AutoFitBehaviorType.AutoFitToContents);

      // 保存文档
      const outputFileName = 'output.docx';
      doc.SaveToFile({ fileName: outputFileName, fileFormat: wasmModule.FileFormat.Docx2013 });

      const modifiedFileArray = window.dotnetRuntime.Module.FS.readFile(outputFileName);
      const modifiedFile = new Blob([modifiedFileArray], { type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' });

      // 创建下载链接
      const url = URL.createObjectURL(modifiedFile);
      const a = document.createElement('a');
      a.href = url;
      a.download = outputFileName;
      document.body.appendChild(a);
      a.click();
      document.body.removeChild(a);
      URL.revokeObjectURL(url);

      // 清理资源 
      doc.Dispose();

    }

  };

  return (
    <div style={{ textAlign: 'center', height: '300px' }}>
      <h1>在 React 中向 Word 文档添加表格</h1>
      <button onClick={AddTable} disabled={!wasmModule}>
        生成
      </button>
    </div>
  );
}

export default App;

在 React 中添加表格到 Word

申请临时 License

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