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

Spire.Cloud 纯前端文档控件

在当今的数据驱动时代,Python 开发者经常需要将列表(一种基本的 Python 数据结构)转换为 Excel 电子表格。Excel 作为各行业通用的数据展示、报告生成与信息共享工具,无论是生成业务报告、准备分析数据,还是与非技术人员协作,掌握将 Python 列表导出为 Excel 的高效方法都至关重要。

虽然像 pandas 这样的轻量级库可以处理基本的导出操作,但 Spire.XLS for Python 提供了对 Excel 格式、样式及文件生成的完全控制,且无需依赖 Microsoft Excel。本文将探讨如何使用该库将各种列表结构转换为 Excel,包含详细的代码示例和最佳实践。

为什么要将 Python 列表转换为 Excel?​

Python 中的列表在存储结构化或非结构化数据方面非常灵活,但 Excel 具有以下优势:

  • 协作便捷性:Excel 是跨行业通用工具,非技术人员无需掌握 Python,即可直接编辑、排序或筛选数据;
  • 报告扩展性:导出后可在 Excel 中进一步添加图表、数据透视表或数据摘要;
  • 行业合规性:金融、医疗等行业常要求以 Excel 格式存储数据,用于审计或归档;
  • 数据可读性:Excel 的格式工具(颜色标注、边框、标题样式)能让数据更直观,远超原始 Python 列表的可读性。

无论是销售数据、用户信息还是调研结果,将 Python 列表写入 Excel 都能让数据更易访问、更显专业。

安装指南

1. 通过 pip 安装(最便捷方式):

打开终端 / 命令提示符,执行以下命令:

pip install Spire.XLS

2. 支持的功能与格式:

该库兼容.xls(Excel 97-2003)和.xlsx(Excel 2007 及以上)格式,可自定义 Excel 样式(如加粗标题、调整列宽、设置颜色),满足生产环境下的文件生成需求。

3. 免费License申请:

若需体验完整功能(无水印、无数据量限制),可点击此链接申请 30 天免费试用许可证

基础场景:将简单 Python 列表转换为 Excel 表格

对于基本的一维列表,您可以遍历列表项并将它们写入单个列或行中的连续单元格。 以下示例将文本列表转换为单个列。如果需要转换数值列表,您可以在保存前设置数字格式

from spire.xls import *
from spire.xls.common import *

# 创建 Workbook 对象
workbook = Workbook()

# 清除默认工作表
workbook.Worksheets.Clear()

# 添加一个新工作表
worksheet = workbook.Worksheets.Add("简单列表")

# 准备待导出的一维列表(示例:产品列表)
data_list = ["鼠标", "键盘", "显示器", "音响", "硬盘"]

# 将列表数据写入Excel单元格(从第1行、第1列开始)
for index, value in enumerate(data_list):
    worksheet.Range[index + 1, 1].Value = value

# 设置列宽以提高可读性
worksheet.Range[1, 1].ColumnWidth = 15

# 保存工作簿
workbook.SaveToFile("简单列表.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

如果您需要将列表导出到单个行,可以使用以下代码:

for index, value in enumerate(data_list):
    worksheet.Range[1, index + 1].Value = value

输出结果

在Python中将简单的一维列表写入Excel

进阶场景:Python 嵌套列表转 Excel 表格

嵌套列表(二维列表)表示含行 / 列结构的表格数据,非常适合直接转换为 Excel 表格。下面我们将一个包含员工数据(姓名、年龄、部门)的嵌套列表导出为 Excel 表格,并优化标题样式。

from spire.xls import *
from spire.xls.common import *

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

# 清除默认工作表
workbook.Worksheets.Clear()

# 添加一个新工作表
worksheet = workbook.Worksheets.Add("员工数据")

# 嵌套列表(行:[姓名、年龄、部门])
employee_data = [
    ["姓名", "年龄", "部门"],  # 标题行
    ["Alexander", 30, "人力资源"],
    ["Bob", 28, "技术"],
    ["Charlie", 35, "市场"],
    ["Diana", 29, "财务"]
]

# 将嵌套列表写入 Excel
for row_idx, row_data in enumerate(employee_data):
    for col_idx, value in enumerate(row_data):
        # 区分数据类型
        if isinstance(value, int):
            worksheet.Range[row_idx + 1, col_idx + 1].NumberValue = value
        else:
            worksheet.Range[row_idx + 1, col_idx + 1].Value = value

# 格式化标题行
worksheet.Range["A1:C1"].Style.Font.IsBold = True
worksheet.Range["A1:C1"].Style.Color = Color.get_Yellow()

# 设置列宽
worksheet.Range[1, 1].ColumnWidth = 10  
worksheet.Range[1, 2].ColumnWidth = 6 
worksheet.Range[1, 3].ColumnWidth = 15

# 保存工作簿
workbook.SaveToFile("二维列表.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

关键说明

  • 数据类型处理:通过 isinstance(value, int) 判断数值类型,用 NumberValue 赋值,避免 Excel 将 “年龄” 识别为文本。
  • 嵌套列表结构:第一个子列表作为标题,后续子列表作为数据行。
  • 二维循环:使用嵌套循环将每行和每列的数据写入 Excel 单元格。

输出结果

使用Python将二维列表写入Excel

扩展建议:若需进一步优化表格,可使用 Spire.XLS 的其他功能,如添加单元格边框设置条件格式或应用其他格式选项。

实用场景:将 Python 字典列表转换为 Excel 表格

字典列表在 Python 中常用于存储带有标签字段的结构化数据(如 API 返回数据、数据库查询结果)。本示例将字典列表(如客户记录)导出为 Excel,并实现标题自动提取、列宽自适应。

from spire.xls import *
from spire.xls.common import *

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

# 清除默认工作表
workbook.Worksheets.Clear()

# 添加一个新工作表
worksheet = workbook.Worksheets.Add("客户数据")

# 准备字典列表(每个字典对应一条客户数据,键为字段名)
customers = [
    {"ID": 101, "姓名": "张xx", "邮箱": "zhang@ example.com"},
    {"ID": 102, "姓名": "王xx", "邮箱": "wang@ example.com"},
    {"ID": 103, "姓名": "李xx", "邮箱": "li@ example.com"}
]

# 自动提取标题
headers = list(customers[0].keys())

# 将标题写入第1行
for col, header in enumerate(headers):
    worksheet.Range[1, col + 1].Value = header
    worksheet.Range[1, col + 1].Style.Font.IsBold = True  # 标题加粗

# 写入数据行
for row, customer in enumerate(customers, start=2):  # 从第2行开始
    for col, key in enumerate(headers):
        value = customer[key]
        if isinstance(value, (int, float)):
            worksheet.Range[row, col + 1].NumberValue = value
        else:
            worksheet.Range[row, col + 1].Value = value

# 自动调整列宽
worksheet.AutoFitColumn(2) 
worksheet.AutoFitColumn(3) 

# 保存文件
workbook.SaveToFile("字典列表.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

核心优势

  • 自动提取标题:从字典键生成标题,节省时间,避免手动输入错误。
  • 自动调整列宽AutoFitColumn 自动适配文字长度,解决 “文字截断” 问题;。
  • 高扩展性:适用于大型字典列表(如 1000 + 条客户记录)。

输出结果

使用Python将字典列表写入Excel

4 个优化 Excel 输出的关键技巧​​

  • 保留数据类型:对于数值(整数、浮点数),始终使用 NumberValue 赋值,避免 Excel 将其识别为文本(导致无法求和、排序)。​
  • 自动调整列宽:推荐用 Worksheet.AutoFitColumn() 替代手动设置列宽,尤其适合文本长度不固定的场景(如邮箱、备注)。​
  • 清晰命名工作表:避免使用默认的 “Sheet1”、“Sheet2”,建议按数据内容命名(如 “2024Q3 销售数据”、“用户注册记录”),提升文件可读性。​
  • 释放工作簿资源:处理大型数据(如 10 万行以上)时,务必调用 Workbook.Dispose(),避免内存泄漏。

结论

通过 Python 将列表转换为 Excel 表格是数据处理的核心技能。Spire.XLS 能轻松创建精致、可用于生产环境的文件。无论是处理简单列表、嵌套数据还是字典,上述示例都能根据不同场景需求进行调整。​若需进一步扩展功能(如添加 Excel 图表、公式、冻结窗格),可参考 Spire.XLS 官方文档。​

常见问题解答(FAQs)

问题1:Spire.XLS 与 pandas 在转换列表到 Excel 方面有何不同?

:pandas 非常适合快速、基础的导出,但格式控制能力弱(难调整字体、颜色、边框)。而 Spire.XLS 更适合精细化导出,支持:

  • 自定义样式(颜色、字体、边框)。
  • 高级 Excel 功能(冻结窗格、条件格式、图表)。
  • 独立功能(无需安装 Excel)。

问题2:如何将 Excel 文件保存为不同格式?

:在 SaveToFile 中使用 ExcelVersion 参数:

workbook.SaveToFile("output.xlsx", ExcelVersion.Version2016)
workbook.SaveToFile("output.xls", ExcelVersion.Version97to2003)

问题3:Spire.XLS 如何处理不同的数据类型?

:针对不同数据类型,需使用对应的赋值属性:

  • 字符串使用 .Text
  • 数值使用 .NumberValue
  • 日期使用 .DateTimeValue
  • 布尔值(True/False)使用 .BooleanValue

问题4:为什么在添加新工作表之前要清除默认工作表?

:创建 Workbook 时,Spire.XLS for Python 会生成默认工作表。因此,如果不使用 Workbook.Worksheets.Clear() 清除它们,最终 Excel 文件会包含额外的空工作表。

问题5:数据在 Excel 中显示异常,可能是什么原因?

:确认使用 1-based 索引(Excel 行 / 列从 1 开始,而非 Python 的 0 开始,以及数据类型是否与预期格式匹配。另外,确认在释放工作簿之前已保存文件。

纯文本(.txt)文件因简洁通用被广泛使用,但无法支持字体、表格、图片等格式;而 Word(.docx)文件虽具备丰富的排版能力,却难以直接用于文本分析、索引等场景。本文将详细介绍如何通过 Spire.Doc for Java(一款轻量级 Word 处理库),快速实现 TXT 文本文件与 Word 的双向转换

为何选择 Spire.Doc for Java?

相比其他 Java 文档处理工具,Spire.Doc for Java 在格式转换场景中具备显著优势:

  • 格式保真:TXT 转 Word 时完整保留原文件的换行结构与内容,避免乱码或内容丢失;
  • 扩展灵活:支持后续编辑(如修改字体、添加水印、插入脚注等),满足个性化格式需求;
  • 多格式兼容:除 TXT 与 Word 互转外,还可实现 Word 转 PDF、HTML、TIFF 等10+格式,适配多场景需求;
  • 轻量化部署:无需安装 Office 环境,仅需引入 JAR 包即可运行,降低项目依赖复杂度。

前置准备:环境配置

要使用 Spire.Doc for Java 顺利完成 TXT 文本到 Word 的转换,您需要先从其官方下载页面下载该库,并将 Spire.Doc.jar 文件作为依赖项添加到 Java 程序中。

若项目使用 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.doc</artifactId>
        <version>13.12.2</version>
    </dependency>
</dependencies>

使用 Java 将 TXT 转换为 Word

TXT 转 Word 的核心逻辑是:通过 Document 类加载 TXT 文件,再以 Word 格式保存。整个过程只需几行代码即可完成,且支持自定义输出路径。

核心API说明

  • Document:核心类,用于在内存中表示 Word 文档。
  • loadFromFile():通过内部解析器读取 TXT 内容,并将其封装到单个 Word 章节中,同时应用默认字体和页边距。
  • saveToFile():调用该方法时,Spire.Doc 会自动将纯文本转换为 .docx 文件,本质是生成符合 OpenXML 格式的结构化 Word 文档。

以下是分步代码示例:

import com.spire.doc.Document;
import com.spire.doc.FileFormat;

public class ConvertTextToWord {

    public static void main(String[] args) {

        // 创建 Document 对象
        Document txt = new Document();

        // 加载 .txt 文本文件
        txt.loadFromFile("介绍.txt");

        // 将文件保存为 Word 格式
        txt.saveToFile("TXT转Word.docx", FileFormat.Docx);

        // 释放资源
        txt.dispose();
    }
}

转换结果:

Java将纯文本文件转换为Word文档

扩展技巧:

将 TXT 文本文件转换为 DOC/DOCX 格式后,您可以根据需求进一步自定义文档格式。为简化这一过程,Spire.Doc for Java 提供了内置接口来编辑文本属性,如修改字体颜色插入脚注添加文字和图片水印等。

使用 Java 将 Word 转换为 TXT 文本

除了 TXT 转 Word,Spire.Doc for Java 还支持将 DOC/DOCX 文件转换为 TXT 格式,便于从格式丰富的 Word 文档中提取纯文本。该功能在以下场景中尤为实用:剥离格式和布局以获取简洁的原始内容,例如用于文本分析、搜索索引、归档,或导入仅支持纯文本的其他系统。

实现逻辑与 TXT 转 Word 类似,仅需修改保存格式:

import com.spire.doc.Document;
import com.spire.doc.FileFormat;

public class ConvertWordtoText {

    public static void main(String[] args) {

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

        // 加载 Word 文件
        doc.loadFromFile("示例.docx");

        // 将文档保存为 TXT 格
        doc.saveToFile("Word转文本.txt", FileFormat.Txt);

        // 释放资源
        doc.dispose();
    }
}

转换结果:

Java将Word转换为TXT文本文件

申请临时 License

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请联系销售获取有效期 30 天的临时许可证。

总结

使用 Spire.Doc for Java 实现 TXT 与 Word 的双向转换,具有速度快、准确性高的特点,且无需安装 Microsoft Word。这对于开发报表、文档生成或文件转换工具的 Java 开发者来说尤为实用。若需进一步探索Spire.Doc的功能(如Word表格操作、邮件合并),可参考官方文档

使用 Spire.XLS 导出 Pandas DataFrame 到 Excel

在 Python 开发中,处理表格数据是非常常见的任务,而 Pandas 是最常用的数据处理和分析库。开发者经常需要将 Pandas DataFrame 导出到 Excel,以便进行报告、团队协作或进一步的数据分析。虽然 Pandas 提供了 to_excel 方法进行基本导出,但如果需要创建格式丰富和含图表的专业 Excel 报表,则需要借助专业Excel库。

本教程介绍如何在Python中使用 Spire.XLS for Python 库将单个或多个 Pandas DataFrame 写入到 Excel,并实现灵活的格式化与可视化设置。

目录

为什么使用 Spire.XLS 导出 Pandas DataFrame 到 Excel

虽然 Pandas 提供了基本的 Excel 导出功能,但它主要用于数据输出而非 Excel 文件处理,对格式设置、样式应用和图表生成等高级功能的支持有限。相比之下,Spire.XLS 是一个专为 Excel 文件创建与操作而设计的专业库,能够提供更灵活、更全面的控制。使用 Spire.XLS,开发者可以:

  • 将多个 DataFrame 组织到同一个工作簿的不同工作表中。
  • 自定义标题、字体、颜色和单元格格式,生成专业布局。
  • 自动调整列宽和行高,提高可读性。
  • 添加图表、公式和其他 Excel 功能,而无需安装微软Excel或其他库。

Pandas DataFrame 导出到 Excel 的准备工作

在导出 Pandas DataFrame 到 Excel 之前,请确保已安装pandas与Spire.XLS库:

pip install pandas spire.xls

这些库允许你将 DataFrame 导出到 Excel,并自定义格式、插入图表和生成结构化布局。

将单个 Pandas DataFrame 导出到 Excel 并设置格式

导出单个 DataFrame 到 Excel 是最常见的场景。使用 Spire.XLS,不仅可以导出 DataFrame,还可以格式化标题、设置单元格样式,并添加图表,让你的报表看起来更加专业。

具体实现步骤如下:

步骤 1:创建示例 DataFrame

首先,需要创建一个 DataFrame。以下是一个示例DataFrame,你可以将其替换为自己的数据。

import pandas as pd
from spire.xls import *

# 创建一个示例 DataFrame
df = pd.DataFrame({
    '姓名': ['张伟', '李娜', '王强'],        # 员工姓名
    '部门': ['人事部', '财务部', '技术部'],   # 部门
    '月薪': [8000, 9500, 12000]             # 月薪
})

步骤 2:创建工作簿并访问第一个工作表

接下来,创建一个新的 Excel 工作簿,并获取第一个工作表。给工作表命名为 "员工信息",便于理解和管理。

# 创建新工作簿
workbook = Workbook()
sheet = workbook.Worksheets[0]
sheet.Name = "员工信息"  # 给工作表命名

步骤 3:写入列标题并格式化

将列标题写入 Excel 第一行,并加粗字体,同时设置浅灰色背景,使表格整洁、易于阅读。

# 写入列标题
for colIndex, colName in enumerate(df.columns, start=1):
    cell = sheet.Range[1, colIndex]
    cell.Text = colName
    cell.Style.Font.IsBold = True          # 设置标题加粗
    cell.Style.Color = Color.get_LightGray()  # 设置浅灰色背景

步骤 4:写入数据行

将 DataFrame 中的每一行数据写入 Excel。对于数字数据,使用 NumberValue 属性,让 Excel 能够识别并用于计算和绘图;对于文本数据,则使用 Text 属性。

# 写入数据行
for rowIndex, row in enumerate(df.values, start=2):
    for colIndex, value in enumerate(row, start=1):
        cell = sheet.Range[rowIndex, colIndex]
        if isinstance(value, (int, float)):
            cell.NumberValue = value  # 数字使用 NumberValue
        else:
            cell.Text = str(value)    # 文本使用 Text

步骤 5:应用边框并自动调整列宽

为数据区域添加外部和内部边框,并让列宽自动适应内容长度,使 Excel 表格更加美观、像专业报表。

# 应用边框并自动调整列宽
usedRange = sheet.AllocatedRange
usedRange.BorderAround(LineStyleType.Thin, Color.get_Black())  # 外边框
usedRange.BorderInside(LineStyleType.Thin, Color.get_Black())  # 内边框
usedRange.AutoFitColumns()  # 自动调整列宽

步骤 6:添加图表以可视化数据

图表能够帮助快速理解数据趋势。在本示例中,我们创建一个柱状图,用于比较各员工月薪。

# 添加图表
chart = sheet.Charts.Add()
chart.ChartType = ExcelChartType.ColumnClustered   # 设置柱状图
chart.DataRange = sheet.Range["A1:C4"]             # 图表数据范围
chart.SeriesDataFromRange = False
chart.LeftColumn = 5      # 图表左侧位置
chart.TopRow = 1          # 图表上方位置
chart.RightColumn = 10    # 图表右侧位置
chart.BottomRow = 16      # 图表底部位置
chart.ChartTitle = "员工月薪对比"                  # 图表标题
chart.ChartTitleArea.Font.Size = 12
chart.ChartTitleArea.Font.IsBold = True

步骤 7:保存工作簿

最后,将工作簿保存到指定位置。

# 保存 Excel 文件
workbook.SaveToFile("员工信息报表.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

生成结果:
单个Pandas DataFrame导出为Excel文件

Excel文件生成后,你可以对其进行进一步处理,例如将其转换为 PDF,方便分享:

workbook.SaveToFile("员工信息报表.pdf", FileFormat.PDF)

关于转换的详细设置,可查阅教程:Python 将 Excel 转为 PDF

将多个 Pandas DataFrame 导出到同一个 Excel 文件

在生成 Excel 报表时,经常需要将多个数据集放在不同的工作表中。使用 Spire.XLS,每个 DataFrame 可以写入独立工作表,使相关数据清晰有序,便于分析。

具体实现步骤如下:

步骤 1:创建多个示例 DataFrame

在导出前,创建两个 DataFrame:一个包含员工信息,另一个包含产品信息。每个 DataFrame 对应一个工作表。

import pandas as pd
from spire.xls import *

# 示例 DataFrame
df1 = pd.DataFrame({'姓名': ['张伟', '李娜'], '年龄': [28, 32]})
df2 = pd.DataFrame({'产品': ['笔记本电脑', '手机'], '价格': [7500, 3200]})

# 将 DataFrame 与对应工作表名绑定
dataframes = [
    (df1, "员工信息"),
    (df2, "产品信息")
]

这里 dataframes 是一个元组列表,将每个 DataFrame 与其对应的工作表名称关联起来。

步骤 2:创建新工作簿

创建一个新的工作簿,用于存放DataFrame数据。新工作簿默认包含三个工作表。

# 创建新工作簿
workbook = Workbook()

步骤 3:循环写入每个 DataFrame到单独的Excel表格

使用循环遍历列表中的 DataFrame,将每个数据集写入单独的工作表。同时为数据区域添加边框。

for i, (df, sheet_name) in enumerate(dataframes):
    if i < workbook.Worksheets.Count:
        sheet = workbook.Worksheets[i]
    else:
        sheet = workbook.Worksheets.Add()
    
    sheet.Name = sheet_name

    # 写入标题并设置字体加粗和背景颜色
    for colIndex, colName in enumerate(df.columns, start=1):
        cell = sheet.Range[1, colIndex]
        cell.Text = colName
        cell.Style.Font.IsBold = True
        cell.Style.Color = Color.get_LightGray()
        sheet.Columns[colIndex - 1].ColumnWidth = 15

    # 写入数据行
    for rowIndex, row in enumerate(df.values, start=2):
        for colIndex, value in enumerate(row, start=1):
            cell = sheet.Range[rowIndex, colIndex]
            if isinstance(value, (int, float)):
                cell.NumberValue = value
            else:
                cell.Text = str(value)

    # 添加边框
    usedRange = sheet.AllocatedRange
    usedRange.BorderAround(LineStyleType.Thin, Color.get_Black())
    usedRange.BorderInside(LineStyleType.Thin, Color.get_Black())

步骤 4:保存工作簿

将Excel文件保存到指定位置。

workbook.SaveToFile("员工与产品信息.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

生成结果:

多个Pandas DataFrame导出为一个Excel文件

将 Pandas DataFrame 写入现有 Excel 文件

在实际工作中,有时并不希望新建 Excel 文件,而是需要将新的数据写入已有的工作簿。使用 Spire.XLS,可以轻松实现这一需求:只需加载现有工作簿,添加新的工作表或访问目标工作表,然后按照与新建工作簿相同的逻辑写入 DataFrame 数据。

以下代码展示了如何将一个Pandas DataFrame写入到现有Excel表格:

import pandas as pd
from spire.xls import *

workbook = Workbook()
workbook.LoadFromFile("员工与产品信息.xlsx")

new_df = pd.DataFrame({
    '区域': ['华北', '华南', '华东', '西南'],
    '销售额': [120000, 150000, 130000, 110000]
})

new_sheet = workbook.Worksheets.Add("区域销售")

# 写入标题
for colIndex, colName in enumerate(new_df.columns, start=1):
    cell = new_sheet.Range[1, colIndex]
    cell.Text = colName
    cell.Style.Font.IsBold = True
    cell.Style.Color = Color.get_LightGray()
    new_sheet.Columns[colIndex - 1].ColumnWidth = 15

# 写入数据
for rowIndex, row in enumerate(new_df.values, start=2):
    for colIndex, value in enumerate(row, start=1):
        cell = new_sheet.Range[rowIndex, colIndex]
        if isinstance(value, (int, float)):
            cell.NumberValue = value
        else:
            cell.Text = str(value)

# 保存
workbook.SaveToFile("员工产品区域信息.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

生成结果:

将Pandas DataFrame写入现有Excel文件

导出 Pandas DataFrame 到 Excel的自定义选项

除了基础导出外,还可以对导出过程进行自定义,以满足特定报表需求。例如,可以选择导出特定列,或者决定是否包含DataFrame索引,从而让 Excel 文件更加整洁、易读。

1. 选择特定列

在实际场景中,很多时候并不需要导出 DataFrame 中的所有列。通过只导出需要的列,可以让 Excel 报表内容更加简洁,同时避免无关信息干扰阅读。

下面示例演示如何只导出姓名和部门两列:

import pandas as pd
from spire.xls import *

# 创建示例 DataFrame
df = pd.DataFrame({
    '姓名': ['张伟', '李娜', '王强'],
    '部门': ['人事部', '财务部', '技术部'],
    '月薪': [8000, 9500, 12000]
})

# 指定需要导出的列
columns_to_export = ['姓名', '部门']

# 创建新的工作簿并获取第一个工作表
workbook = Workbook()
sheet = workbook.Worksheets[0]

# 写入标题行
for colIndex, colName in enumerate(columns_to_export, start=1):
    sheet.Range[1, colIndex].Text = colName

# 写入数据行
for rowIndex, row in enumerate(df[columns_to_export].values, start=2):
    for colIndex, value in enumerate(row, start=1):
        sheet.Range[rowIndex, colIndex].Text = value

# 保存 Excel 文件
workbook.SaveToFile("选择列.xlsx")
workbook.Dispose()

2. 包含或排除DataFrame索引

默认情况下,DataFrame 的索引不会导出到 Excel。但在一些报表中,行号或索引对数据分析非常重要。此时,可以手动将索引写入工作表,使每一行都有明确标识。

下面示例展示如何在导出特定列的同时包含索引:

# 写入索引标题
sheet.Range[1, 1].Text = "索引"

# 写入索引数值(数字)
for rowIndex, idx in enumerate(df.index, start=2):
    sheet.Range[rowIndex, 1].NumberValue = idx

# 写入其他列标题,从第二列开始
for colIndex, colName in enumerate(columns_to_export, start=2):
    sheet.Range[1, colIndex].Text = colName

# 写入数据行
for rowIndex, row in enumerate(df[columns_to_export].values, start=2):
    for colIndex, value in enumerate(row, start=2):
        if isinstance(value, (int, float)):
            sheet.Range[rowIndex, colIndex].NumberValue = value
        else:
            sheet.Range[rowIndex, colIndex].Text = str(value)

# 保存 Excel 文件
workbook.SaveToFile("包含索引.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

总结

本文介绍了在 Python 中使用 Spire.XLS 将 Pandas DataFrame 导出到 Excel 的多种方法。通过示例可以看到,除了基础的数据导出外,还可以实现标题样式设置、数据格式化、向现有工作簿写入数据,以及选择特定列或包含索引等操作。这些方法让数据分析和报表生成过程更加灵活,使开发者能够更好地控制导出内容和展示效果,以适应不同的应用场景和业务需求。

常见问题解答(FAQs)

问:如何在 Python 中将 Pandas DataFrame 导出到 Excel?

答: 可以使用 Spire.XLS 或类似库将 DataFrame 写入 Excel 文件。这样不仅可以导出数据,还可以自定义表头样式、单元格格式以及添加图表等,使报表更专业。

问:是否可以在同一个 Excel 文件中导出多个 DataFrame?

答: 可以。通过 Spire.XLS,可以将多个 DataFrame 写入同一个工作簿的不同工作表中,从而将相关数据整合在一个文件里,便于管理和分析。

问:如何在导出的 Excel 中设置标题和单元格样式?

答: 可以将表头字体加粗、设置背景颜色,调整列宽和行高,数字使用 NumberValue 属性保存,以便 Excel 识别和计算。这些设置能让 Excel 报表看起来更规范、易读。

问:能在导出的 Excel 文件中添加图表吗?

答: 可以。Spire.XLS 支持柱状图、折线图等多种图表类型,图表可以直接绑定 DataFrame 的数据,帮助快速展示数据趋势或对比分析。

问:导出 Excel 文件是否必须安装 Microsoft Excel?

答: 不需要。Spire.XLS 可以在 Python 中独立创建和格式化 Excel 文件,无需依赖 Excel 软件本身。

问:可以选择导出 DataFrame 的部分列或包含索引吗?

答: 可以。导出时可以指定需要的列,也可以选择是否包含索引,从而生成更简洁、针对性更强的报表。

Spire.Barcode for Java 5.2.0现已发布。该版本成功修复了两个在扫描条码图片时出现的问题。详情请查阅以下内容。

问题修复:


获取Spire.Barcode for Java 5.2.0请点击

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

.NET PDF 转JPG

在现代应用程序中处理 PDF 文档是一个常见需求。无论是构建文档管理系统、ASP.NET Web 服务,还是桌面查看器应用,您可能在某些时候需要将 PDF 页面显示为图像。与其嵌入完整的 PDF 查看器,不如直接将 PDF 页面转换为 JPG 图像,这样就可以在支持图像的地方使用它们。

在本指南中,我们将逐步介绍如何使用 Spire.PDF for .NET 将 PDF 文件转换为 JPG 图像 。我们将涵盖转换单个页面的基础知识、处理多个页面、调整分辨率和质量、将图像保存到流中,甚至批量转换整个 PDF 文件夹。

阅读完本文后,您将清晰了解如何在 .NET 项目中实现 PDF 到图像的转换。

目录

.NET PDF 库简介与安装

Spire.PDF for .NET 是一款专业的 .NET PDF 组件库,使开发人员能够在 .NET 应用程序中创建、读取、编辑、转换和打印 PDF 文档。该库特别提供了高质量的 PDF 转图片功能,支持包括 JPG/JPEG、PNG、BMP、TIFF、SVG 和 EMF 在内的多种图片格式,能够满足不同场景下的输出需求。

安装方法

在开始将 PDF 转换 JPG 前,请确保已安装 Spire.PDF 库。您可以通过 Visual Studio 的 NuGet 包管理控制台轻松安装:

Install-Package Spire.PDF

或者,在 Visual Studio 中打开 NuGet 包管理器,搜索 Spire.PDF,然后点击安装。除此以外,您也可以从官网下载Spire.PDF for .NET,并手动添加 DLL 引用。

核心方法:SaveAsImage

在 Spire.PDF 中,SaveAsImage() 方法是实现 PDF 转换为图像的核心接口。

方法重载1

Image SaveAsImage(int pageIndex, PdfImageType imageType)

  • pageIndex:您想要转换的 PDF 页的零基索引。
  • imageType:要生成的图像类型,通常为 PdfImageType.Bitmap。

方法重载2

Image SaveAsImage(int pageIndex, PdfImageType imageType, int dpiX, int dpiY)

  • dpiX, dpiY:水平与垂直分辨率(每英寸点数)。数值越高,图像越清晰,但文件体积也更大。

支持的 PdfImageType 值

  • Bitmap → 返回原始图像。
  • Metafile → 返回矢量图像(对于 JPG 导出不常见)。

大多数开发人员在导出为 JPG 时使用 Bitmap。

在 C# .NET 中将 PDF 转换为 JPG 的步骤

  1. 导入 Spire.Pdf 和 System.Drawing 命名空间。
  2. 创建一个新的 PdfDocument 实例。
  3. 从指定路径加载 PDF 文件。
  4. 使用 SaveAsImage() 将一个或多个页面转换为图像。
  5. 以 JPG 格式保存生成的图像。

将单个页面转换为 JPG

以下示例展示如何将 PDF 的第一页转换为 JPG 图像:

using Spire.Pdf.Graphics;
using Spire.Pdf;
using System.Drawing.Imaging;
using System.Drawing;

namespace ConvertSpecificPageToJpg
{
    class Program
    {
        static void Main(string[] args)
        {
	    // 创建 PdfDocument 对象
            PdfDocument doc = new PdfDocument();

            // 加载示例 PDF 文档
            doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\sample.pdf");

            // 将特定页面转换为位图图像
            Image image = doc.SaveAsImage(0, PdfImageType.Bitmap);

            // 将图像保存为 JPG 文件
            image.Save("ToJPG.jpg", ImageFormat.Jpeg);
            doc.Dispose();
        }
    }
}

效果图:

将指定 PDF 页面转换为 JPG

除了 JPG 以外,Spire.PDF 支持将 PDF 转换为多种其他图像格式,如 PNG、BMP、SVG 和 TIFF。有关详细信息,请参考教程:使用 C# 将PDF 转换为图片

转换多个页面(所有或范围)

转换所有页面

以下循环遍历所有页面,将每个页面转换为图像,并将其保存到磁盘,文件名中包含页码。

for (int i = 0; i < doc.Pages.Count; i++)
{
    Image image = doc.SaveAsImage(i, PdfImageType.Bitmap);
    string fileName = string.Format("Output\\ToJPG-{0}.jpg", i);
    image.Save(fileName, ImageFormat.Jpeg);
}

转换特定范围的页面

要转换特定范围的页面(例如,页面 2 到 4),可以按如下方式修改 for 循环:

for (int i = 1; i <= 3; i++)
{
    Image image = doc.SaveAsImage(i, PdfImageType.Bitmap);
    string fileName = string.Format("Output\\ToJPG-{0}.jpg", i);
    image.Save(fileName, ImageFormat.Jpeg);
}

高级转换选项

设置图像分辨率/质量

默认的输出分辨率可能无法满足打印或精细分析的需求。您可以通过以下方式精确设置 DPI:

Image image = doc.SaveAsImage(0, PdfImageType.Bitmap, 300, 300);
image.Save("ToJPG.jpg", ImageFormat.Jpeg);

分辨率选择建议:

  • 72 DPI :默认设置,适合屏幕显示。
  • 150 DPI :推荐用于预览和网页展示。
  • 300 DPI :高品质输出,满足打印需求。

需要注意的是,提高 DPI 会获得更清晰的图像,但相应地会增加内存占用和文件大小。

将转换后的图像保存为流

除了直接保存到磁盘,您还可以将输出图像存储到内存流中,这在以下场景中特别实用:

  • ASP.NET 应用向浏览器实时返回图像。
  • Web API 接口需要以 HTTP 响应形式发送图像。
  • 需要将图像以二进制形式存入数据库。
using (MemoryStream ms = new MemoryStream())
{
    pdf.SaveAsImage(0, PdfImageType.Bitmap, 300, 300).Save(ms, ImageFormat.Jpeg);
    byte[] imageBytes = ms.ToArray();
}

通过这种方式,JPG 图像将以字节数组形式保存在内存中,方便进行后续处理。

批量转换(多个 PDF)

当需要批量处理多个 PDF 文档时,可以使用以下转换方案:

string[] files = Directory.GetFiles("InputPDFs", "*.pdf");
foreach (string file in files)
{
    PdfDocument doc = new PdfDocument();
    doc.LoadFromFile(http://cdn.e-iceblue.cn/file);
    for (int i = 0; i < doc.Pages.Count; i++)
    {
        Image image = doc.SaveAsImage(i, PdfImageType.Bitmap);
        string fileName = Path.GetFileNameWithoutExtension(file);
        image.Save($"Output\\{fileName}-Page{i + 1}.jpg", ImageFormat.Jpeg);
    }
    doc.Dispose();
}

Spire.PDF 也支持将图片转回为 PDF,请参考:C# 图片转 PDF:将 JPG/PNG 转换为 PDF 文件

故障排除与最佳实践

在使用 .NET 进行 PDF 转图片时可能会遇到一些常见问题,以下是相应的解决方案:

1. 大文件内存占用过高

  • 建议使用较低 DPI(如 150 而非 300)。
  • 采用分块处理,避免一次性加载全部内容。

2. 输出图像模糊或质量不佳

  • 适当提高 DPI 设置。
  • 对于包含精细图表或文本的内容,建议选用 PNG 格式替代 JPG。

3. 文件路径相关问题

  • 始终确保输出目录存在。
  • 使用 Path.Combine() 方法构建跨平台兼容的路径。

4. 加密 PDF 文件处理

  • 加载文件时需提供密码参数:
doc.LoadFromFile("secured.pdf", "password");

5. 资源释放管理

  • 务必对 PdfDocument 和 Image 对象调用 Dispose() 方法,及时释放内存资源。

遵循这些实践建议,能够有效提升转换效率并确保输出质量。

总结

通过本指南的详细讲解,我们全面掌握了在 .NET 平台使用 Spire.PDF 库将 PDF 文档转换为 JPG 图像的方法。从基础的单个页面转换,到处理多页文档、调整图像分辨率与质量,再到将图像保存至内存流以及批量处理多个 PDF 文件,Spire.PDF 提供了一套灵活且功能强大的 API 来满足多样化的开发需求。

遵循文中的最佳实践与故障排查建议,如合理管理内存、处理加密文档以及确保资源正确释放,将帮助您构建出更加稳定、高效的 PDF 转图像功能。无论是集成到 Web 服务、桌面应用还是文档管理系统中,Spire.PDF for .NET 都是一个值得信赖的工具,能够帮助您优雅地解决 PDF 到 JPG 图像的转换需求。

常见问题解答

Q1. 我可以将 PDF 转换为 JPG 以外的格式吗?

是的。Spire.PDF 支持 PNG、BMP、SVG 等多种常见图像格式。

Q2. 我应该使用什么 DPI?

  • 72 DPI 用于缩略图
  • 150 DPI 用于网页预览
  • 300 DPI 用于打印质量

Q3. Spire.PDF 支持加密的 PDF 吗?

支持。但在加载文件时需要提供正确的密码才能进行转换。

Q4. 我可以将其集成到 ASP.NET 中吗?

完全可以。您可以将图像保存到内存流中,并通过 HTTP 响应直接返回给客户端。

Q5. 我可以将图像转换回 PDF 吗?

支持。您可以加载 JPG、PNG 或 BMP 文件并将其插入到 PDF 页面中,实现图像到 PDF 的逆向转换。

申请临时 License

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

Spire.Office 10.9.0 现已发布。在这个版本中,Spire.Doc 提供了用于细粒度文档样式控制的核心接口;Spire.XLS 支持创建和修改公式;Spire.Presentation 修复了文档无法打开的问题;Spire.PDF 改进了 OFD 到 PDF 的转换;Spire.DocViewer 调整了与安全相关的依赖项;Spire.PDFViewer 添加了一个跨平台的 .NET 7.0 版本;Spire.Barcode 修复了字体应用问题。此外,本版本成功修复了许多已知问题。更多详细信息见下文。

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

版本信息如下:


获取Spire.Office 10.9.0,请点击:

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

Spire.Doc

新功能:

问题修复:

Spire.XLS

优化:

新功能:

问题修复:

Spire.PDF

新功能:

问题修复:

Spire.Presentation

问题修复:

Spire.Barcode

调整:

修复:

Spire.DocViewer

调整:

新功能:

Spire.PDFViewer

调整:

新功能:

如何使用 C# .NET 编辑 PDF

PDF(可移植文档格式)因其在跨平台环境下保持一致的布局和格式而被广泛用于文档共享、分发和存档。在PDF 文档开发过程中,开发者常常需要通过程序对 PDF 文件进行编辑操作,例如替换文本、插入图片、添加水印或提取页面等。

在本教程中,你将学习如何使用 Spire.PDF for .NET 库通过编程方式在 C# 中编辑 PDF 文件

目录

为什么要使用 C# 编辑 PDF

尽管 Adobe Acrobat 等工具提供手动编辑 PDF 的功能,但通过 C# 编程方式编辑 PDF 有显著优势:

  • 自动化:可批量处理数百个文档,无需人工干预。
  • 集成性:可作为工作流的一部分自动生成报表、发票或证书等。
  • 一致性:在多个 PDF 上统一应用样式、水印或标记。
  • 灵活性:可从数据库或外部数据源提取或替换内容,实现高度定制。

C# PDF 编辑库

Spire.PDF for .NET 是一个功能强大的 .NET PDF 库,可让开发者在 .NET 应用中生成、读取、编辑和转换 PDF 文件,支持 .NET Framework 和 .NET Core。

Spire.PDF - C# PDF 编辑库

该库为开发者提供了丰富的PDF操作功能:

  • PDF 创建:从零生成 PDF,或基于现有文档创建。
  • 文本编辑:在任意页面添加、替换或删除文本。
  • 图片编辑:插入、调整大小或删除图片。
  • 页面操作:添加、删除、提取或重新排序页面。
  • 注释:添加印章、批注或标记内容。
  • 水印:添加文本或图片水印以实现版权保护。
  • 表单处理:创建和填写 PDF 表单。
  • 数字签名:添加并验证签名确保文件真实性。
  • 加密:应用密码保护和用户权限控制。

C# 编辑 PDF 分步详解

在 C# 中修改 PDF 文件通常涉及以下步骤:创建项目、安装库、加载 PDF、进行必要修改、保存文档。以下是每一步的详细说明。

步骤 1:创建 C# 项目

在开始编辑 PDF 之前,需要创建一个新的 C# 项目:

  • 打开 Visual Studio
  • 创建一个新项目,可选择控制台应用或 Windows 窗体应用,视实际需求而定。
  • 命名项目(例如 PdfEditorDemo),然后点击"创建"。

步骤 2:安装 Spire.PDF

接下来,需要安装 Spire.PDF 库,它提供读取、编辑和保存 PDF 所需的全部功能。

可以通过 NuGet 包管理器控制台安装:

Install-Package Spire.PDF

或者通过 NuGet 包管理器 GUI 搜索 Spire.PDF 并点击安装。

步骤 3:加载已有 PDF

在对已有 PDF 文件进行修改之前,需要先将其加载到 PdfDocument 对象中,以便访问文档的页面、文本和图片等内容。

using Spire.Pdf;

PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("示例.pdf");

步骤 4:修改 PDF 文档内容

编辑文本、插入图片、管理页面和添加水印是 PDF 开发中的常见操作。下面将逐一介绍这些操作,并附上示例代码说明。

4.1 编辑文本

文本编辑是 PDF 中最常见的操作。你可以选择替换已有文本或在特定页面添加新文本。

替换已有文本:

在 PDF 中替换文本可以针对单页或整个文档更新内容,同时保持原有格式不变。使用 PdfTextReplacer 类,可快速实现文本的查找与替换操作:

// 获取第一页
PdfPageBase page = pdf.Pages[0];
// 创建 PdfTextReplacer 对象
PdfTextReplacer textReplacer = new PdfTextReplacer(page);

// 将所有目标文本替换为新文本
textReplacer.ReplaceAllText("旧文本", "新文本");

添加新文本:

除了替换已有文本,还可以在 PDF 页面任意位置添加新文本,只需一行代码:

page.Canvas.DrawString(
    "你好,世界!",
    new PdfTrueTypeFont(new Font("宋体", 15f, FontStyle.Bold), true),
    new PdfSolidBrush(Color.Black),
    90, 30
);

4.2 插入与更新图片

PDF 文档中通常包含视觉元素,如徽标、图表或插图。开发者可以在PDF中插入新图片,或者更新旧图片以增强文档的视觉效果。

插入图片:

// 加载图片
PdfImage image = PdfImage.FromFile("logo.png");
// 在指定位置绘制图片,并设置大小
page.Canvas.DrawImage(image, 100, 150, 200, 100);

更新图片:

// 加载新图片
PdfImage newImage = PdfImage.FromFile("image1.jpg");
// 创建 PdfImageHelper 实例
PdfImageHelper imageHelper = new PdfImageHelper();
// 获取页面上的图片信息
PdfImageInfo[] imageInfo = imageHelper.GetImagesInfo(page);
// 用新图片替换页面上的第一张图片
imageHelper.ReplaceImage(imageInfo[0], newImage);

4.3 添加、删除或提取页面

页面管理是 PDF 编辑的另一个重要方面,包括添加新页面、删除不需要的页面,以及将特定页面提取到新文档。

添加新页面:

// 添加新页面
PdfPageBase newPage = pdf.Pages.Add();

删除页面:

// 删除最后一页
pdf.Pages.RemoveAt(pdf.Pages.Count - 1);

提取页面到新文档:

// 创建新 PDF 文档
PdfDocument newPdf = new PdfDocument();
// 将原文档的第三页提取到新 PDF
newPdf.InsertPage(pdf, pdf.Pages[2]);
// 保存新 PDF
newPdf.SaveToFile("提取页面.pdf");

4.4 添加水印

在 PDF 中添加水印可帮助标识机密信息、添加品牌或保护知识产权。开发者可以通过代码在任意页面上轻松添加水印:

// 遍历 PDF 文档的每一页
foreach (PdfPageBase page in pdf.Pages)
{
    // 创建一个平铺画刷(Tiling Brush),尺寸为页面宽度的一半,高度为页面高度的三分之一
    PdfTilingBrush brush = new PdfTilingBrush(
        new SizeF(page.Canvas.ClientSize.Width / 2, page.Canvas.ClientSize.Height / 3));

    // 设置透明度为 0.3,使水印半透明
    brush.Graphics.SetTransparency(0.3f);

    // 保存当前图形状态,方便后续恢复
    brush.Graphics.Save();

    // 将坐标原点移动到画刷中心
    brush.Graphics.TranslateTransform(brush.Size.Width / 2, brush.Size.Height / 2);

    // 将坐标系旋转 -45 度,使水印呈斜角
    brush.Graphics.RotateTransform(-45);

    // 在画刷上绘制文字“DO NOT COPY”,如需绘制中文,需使用PdfTrueTypeFont并改为中文字体
    // 使用 Helvetica 字体,字号 24,颜色为紫罗兰色,文字居中
    brush.Graphics.DrawString(
        "DO NOT COPY",
        new PdfFont(PdfFontFamily.Helvetica, 24),
        PdfBrushes.Violet,
        0, 0,
        new PdfStringFormat(PdfTextAlignment.Center));

    // 恢复之前保存的图形状态
    brush.Graphics.Restore();

    // 重置透明度为 1(不透明)
    brush.Graphics.SetTransparency(1);

    // 将画刷绘制到页面整个区域,实现水印效果
    page.Canvas.DrawRectangle(brush, new RectangleF(new PointF(0, 0), page.Canvas.ClientSize));
}

步骤 5:保存修改后的 PDF

完成所有编辑后,最后一步是保存修改并释放资源:

// 保存修改后的 PDF 并释放资源
pdf.SaveToFile("修改.pdf");
pdf.Close();

输出PDF文档:

C# 编辑 PDF 输出效果

提高 C# PDF 编辑效率的技巧

在程序化编辑 PDF 时,遵循以下实用技巧,可以确保输出准确、可读且高效:

  • 批量处理:对于重复任务,通过循环处理多个 PDF 文件,而非单独处理,提高效率并减少人工操作。
  • 文本位置:插入新文本时,注意坐标,防止与现有内容重叠,保持版面整洁。
  • 字体与编码:选择支持所需字符的字体,尤其是中文、阿拉伯文或其他扩展字符。
  • 内存管理:使用完 PdfDocument 对象后及时释放资源,以避免大文件处理时性能问题。

总结

本教程介绍了如何使用 Spire.PDF 在 C# 中编辑 PDF 文件,涵盖文本替换、图片插入、页面管理及水印添加等操作。每个步骤均提供实用代码示例,帮助开发者通过程序化方式高效处理 PDF,提高文档操作效率与专业性。

常见问题解答

Q1:如何在 C# 中使用 Spire.PDF 编辑 PDF 文本?

A1: 使用 Spire.PDF,可以替换已有文本或添加新文本。PdfTextReplacer 和 page.Canvas.DrawString() 提供精确控制,同时保持 PDF 格式一致。

Q2:在 C# 中如何替换或添加 PDF 文本?

A2: 通过 PdfTextReplacer 查找并替换文本,或使用 page.Canvas.DrawString() 在任意位置添加新文本,实现程序化 PDF 编辑。

Q3:可以在 C# 中插入或更新 PDF 图片吗?

A3: 可以,使用 PdfImage 和 PdfImageHelper 将图片绘制或替换到 PDF 页面上,支持图像更新和插入操作。

Q4:如何用代码为 PDF 添加水印?

A4: 可使用 C# 和 Spire.PDF 程序化添加文本或图片水印,并控制透明度、旋转和位置,可应用于单页或所有页面。

Q5:如何在 C# 中提取 PDF 的特定页面?

A5: 创建新的 PDF 文档,将原文档的指定页面插入新文档,实现单页或页范围提取,便于程序化处理 PDF 文件。

Spire.PDFViewer 8.2.1 已发布,该版本推出了跨平台的 .NET 7.0 通用版本,并优化了面向 Windows 平台的专用版本。具体更新详情如下。

新功能:

调整:


获取 Spire.PDFViewer 8.2.1 请点击:

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

Spire.PDF 11.9.17 现已正式发布。本次更新修复了多项问题,包括希伯来语与英语混合文本的绘制顺序错误、阿拉伯语文本显示异常、文本提取和重绘导致的字符错误、OFD 转 PDF 转换时线条加粗,以及调用 .NET Standard DLL 打印失败等问题。详情如下。

问题修复:


获取 Spire.PDF 11.9.17 请点击:

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

Spire.Presentation 10.9.3 已发布。该版本修复了一个生成文档无法正常打开的问题。详情请查看下文。

问题修复:


获取Spire.Presentation 10.9.3,请点击:

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