我们很高兴地宣布Spire.PDF for Python 11.6.1版本正式发布。本次更新新增了对Linux Aarch64 平台的支持,并加入了备受期待的PDF转Markdown功能。此外,我们还修复了若干已知问题,包括OFD转PDF时出现的严重错误。以下是详细更新内容:
新功能:
问题修复:
Spire.PDF 11.6.0 现已正式发布。该版本成功修复了一些在转换PDF到图片、加载、及预览PDF文件时出现的问题。详情请查阅以下内容。
问题修复:
在 Excel 中,工作表名称通常能够反映其用途或所含内容,提取这些名称有助于理清整个工作簿的结构。对于新用户或协作者来说,仅凭这些名称就能快速掌握各表中的数据类型。本文将演示如何使用 Java 获取 Excel 文件中的所有工作表名称,帮助你更高效地管理和理解工作簿数据。
在开始用 Java 获取 Excel 工作表名称之前,我们需要先引入一个能够处理 Excel 文件的库。我们推荐使用使用 Spire.XLS for Java,这个库无需依赖 Microsoft Office,支持读取、编辑、导出等多种功能,尤其适合需要处理 Excel 数据的 Java 项目。 安装这个 Java Excel 库并不难:下载 Spire.XLS 的 JAR 文件,并将其添加到 Java 项目中作为依赖。如果你使用 Maven,只需在项目的 pom.xml 文件中添加以下代码,便可轻松引入。
<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>15.11.3</version>
</dependency>
</dependencies>
此外,官方还提供免费版,适合评估、开发测试及小型项目使用。
Spire.XLS 提供了 Worksheet.getName() 方法,用于获取工作表的名称。但要获取 Excel 中所有工作表的名称(包括隐藏的工作表),你还需要遍历每个工作表,以确保没有工作表被遗漏。具体步骤如下:
下方是在 Java 中获取所有工作表名称的完整代码示例:
import java.io.*;
import com.spire.xls.*;
public class GetWorksheetNames {
public static void main(String[] args) throws IOException {
// 创建一个 Workbook 对象
Workbook workbook = new Workbook();
// 加载 Excel 文件
workbook.loadFromFile("/成绩.xlsx");
// 创建一个 StringBuilder 实例,用以保存提取到的工作表名称
StringBuilder stringBuilder = new StringBuilder();
// 遍历工作表
for (Object worksheet : workbook.getWorksheets()) {
// 获取当前工作表
Worksheet sheet = (Worksheet) worksheet;
// 获取工作表的名称。并将其添加到 StringBuilder 中
stringBuilder.append(sheet.getName() + "\r\n");
}
// 将 StringBuilder 的内容写入到文本文件中
FileWriter fw = new FileWriter("/获取excel工作表名称.txt", true);
BufferedWriter bw = new BufferedWriter(fw);
bw.append(stringBuilder);
bw.close();
fw.close();
// 释放资源
workbook.dispose();
}
}

有时 Excel 文件中可能包含隐藏的工作表。若需要获取这些隐藏工作表的名称,可以先遍历所有工作表,筛选出隐藏的部分,再通过 Worksheet.getName() 方法提取其名称。操作步骤如下所示:
以下是 Java 获取所有 Excel 隐藏工作表名称的完整示例代码。可直接在 Java 编辑器中运行,按需修改细节即可:
import java.io.*;
import com.spire.xls.*;
public class GetHiddenWorksheetNames {
public static void main(String[] args) throws IOException {
// 创建一个 Workbook 对象
Workbook workbook = new Workbook();
// 加载 Excel 文件
workbook.loadFromFile("/成绩.xlsx");
// 创建一个 StringBuilder 以储存提取的工作表名称
StringBuilder stringBuilder = new StringBuilder();
// 遍历所有工作表
for (Object worksheet : workbook.getWorksheets()) {
// 获取当前工作表
Worksheet sheet = (Worksheet) worksheet;
// Detect the hidden worksheet 检查工资表是否被隐藏
if (sheet.getVisibility() == WorksheetVisibility.Hidden) {
// 获取隐藏工作表的名称并添加到 StringBuilder 中
stringBuilder.append(sheet.getName() + "\r\n");
}
}
// 将 StringBuilder 的内容写入到文本文件中
FileWriter fw = new FileWriter("/获取隐藏工作表名称.txt", true);
BufferedWriter bw = new BufferedWriter(fw);
bw.append(stringBuilder);
bw.close();
fw.close();
// 释放资源
workbook.dispose();
}
}

通过本文的讲解,你已经学会了如何使用 Java 获取 Excel 文件中的所有工作表名称,包括隐藏的工作表。借助 Spire.XLS for Java,你可以更高效地处理 Excel 数据,为后续的数据分析或自动化处理打下基础。 如果你需要处理更复杂的 Excel 操作,或有其他技术需求,欢迎随时联系我们。
Spire.Presentation for Java 10.6.0 现已正式发布。最新版本修复了添加空白段落后 shape 的高度减少的问题。详情请查阅下列内容。
问题修复:
https://www.e-iceblue.cn/Downloads/Spire-Presentation-JAVA.html
将 HTML 内容转换为 Word 文档,对于内容共享、归档以及保持格式一致性都非常重要。它不仅便于后续编辑,还能很好地与其他工具配合使用,满足行业标准。此外,Word 文档支持离线访问,版式专业,非常适合正式提交使用。总体来说,这种转换方式提升了文档的可访问性,也让内容管理更加简单高效。 本文将介绍如何使用 Spire.Doc for Java 在 Java 中将 HTML 文件或 HTML 字符串转换为 Word 文档。
Spire.Doc for Java 提供了稳定高效的 HTML 转 Word 功能,是一款无需依赖 Microsoft Office 的独立第三方组件。 它支持将 HTML 文件或字符串直接转换为 Word 文档,并尽可能保留原始样式和布局,广泛应用于报告生成、系统导出、内容归档等自动化场景。除此之外,Spire.Doc 还提供丰富的 Word 文档操作功能,配合简洁直观的 API 设计,能够帮助开发者高效构建企业级文档处理流程。
要使用该工具,你需要先在 Java 项目中引入 Spire.Doc.jar 文件作为依赖项。你可以点击此处下载 JAR 文件;如果你使用 Maven,只需在 pom.xml 文件中添加以下配置即可完成导入。
<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>
要将 HTML 文件转换为 Word 文档,核心在于使用 Document 类。该类提供了导入 HTML 内容并导出为 DOC 或 DOCX 等格式的方法。借助 Spire.Doc,你只需简单三步,就可以轻松实现 HTML 到 Word 的自动化转换。
使用 Java 将 HTML 文件转换为 Word 的步骤如下:
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import com.spire.doc.Section;
import com.spire.doc.documents.XHTMLValidationType;
public class ConvertHtmlFileToWord {
public static void main(String[] args) {
// 创建一个 Document 类的对象
Document document = new Document();
// 加载 HTML 文件
document.loadFromFile("E:/Administrator/Python1/input/项目进度.html", FileFormat.Html, XHTMLValidationType.None);
// 获取第一节
Section section = document.getSections().get(0);
// 设置页边距
section.getPageSetup().getMargins().setAll(2);
// 将文档保存为 Word 文件
document.saveToFile("E:/Administrator/Python1/output/HTML文件转Word.docx",FileFormat.Docx);
document.dispose();
}
}

在某些场景下,你可能需要在运行时动态生成或修改 HTML 内容,例如从用户输入、数据库查询结果,或模板引擎中构建 HTML 字符串。相比转换静态 HTML 文件,Spire.Doc for Java 提供了更灵活的方式,可以通过 Paragraph.appendHTML() 方法将 HTML 字符串直接渲染到 Word 文档中。
使用 Java 将 HTML 字符串转换为 Word 的步骤如下:
import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import com.spire.doc.Section;
import com.spire.doc.interfaces.IParagraph;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class ConvertHtmlStringToWord {
public static void main(String[] args) throws IOException {
// 创建一个 Document 对象
Document document = new Document();
// 添加一个节
Section section = document.addSection();
// 设置页边距
section.getPageSetup().getMargins().setAll(2);
// 添加一个段落
IParagraph paragraph = section.addParagraph();
// 自定义 HTML 字符串
String htmlString = "<!DOCTYPE html>\n" +
"<html lang=\"zh-CN\">\n" +
"<head>\n" +
" <meta charset=\"UTF-8\">\n" +
" <title>季度销售报告</title>\n" +
" <style>\n" +
" body {\n" +
" font-family: \"Microsoft YaHei\", sans-serif;\n" +
" line-height: 1.6;\n" +
" padding: 20px;\n" +
" }\n" +
" table {\n" +
" border-collapse: collapse;\n" +
" width: 60%;\n" +
" margin-top: 20px;\n" +
" }\n" +
" th, td {\n" +
" border: 1px solid #666;\n" +
" padding: 8px 12px;\n" +
" text-align: center;\n" +
" }\n" +
" th {\n" +
" background-color: #f2f2f2;\n" +
" }\n" +
" </style>\n" +
"</head>\n" +
"<body>\n" +
"\n" +
" <h2>2024 年第一季度销售报告</h2>\n" +
"\n" +
" <p>本季度销售数据稳中有升,各大区整体完成情况良好,以下为关键区域销售业绩摘要:</p>\n" +
"\n" +
" <table>\n" +
" <tr>\n" +
" <th>地区</th>\n" +
" <th>负责人</th>\n" +
" <th>销售额(万元)</th>\n" +
" <th>完成率</th>\n" +
" </tr>\n" +
" <tr>\n" +
" <td>西南地区</td>\n" +
" <td>王磊</td>\n" +
" <td>132</td>\n" +
" <td>110%</td>\n" +
" </tr>\n" +
" <tr>\n" +
" <td>华中地区</td>\n" +
" <td>陈莉丽</td>\n" +
" <td>98</td>\n" +
" <td>95%</td>\n" +
" </tr>\n" +
" <tr>\n" +
" <td>东北地区</td>\n" +
" <td>刘雨桐</td>\n" +
" <td>85</td>\n" +
" <td>102%</td>\n" +
" </tr>\n" +
" </table>\n" +
"\n" +
"</body>\n" +
"</html>\n";
// 将 HTML 字符串添加到段落中
paragraph.appendHTML(htmlString);
// 将文档保存为 Word 文件
document.saveToFile("E:/Administrator/Python1/output/HTML字符串转Word.docx", FileFormat.Docx);
document.dispose();
}
}

本教程简要介绍了怎样在 Java 中将 HTML 转换为 Word,包括了转换 HTML 文件和转换 HTML 字符串为 Word 文档。如果你本文使用的工具——Spire.Doc for Java 感兴趣,可以试用它的免费版本,如果你要处理更加复杂的工作或其它需求,也欢迎随时联系我们!
Spire.PDFViewer 8.1.3 已发布。本次更新修复了设置"Anchor"属性后,控件抛”NullReferenceException“的问题。详情请阅读以下内容。
问题修复:
在日常工作中,经常需要从包含表格、报表或发票数据的 PDF 文件中提取信息。若采用手动复制的方式,不仅效率低下,而且容易出现错误,整体体验也非常繁琐。为了提高数据处理效率,借助 Python 可实现自动化地将 PDF 转换为 CSV,从而轻松完成数据提取、整理、分析和导入等工作。
本文将介绍如何使用 Python 实现 PDF 到 CSV 的高效转换,借助 Spire.PDF for Python —— 一款无需依赖任何外部组件的 PDF 操作库,直接提取 PDF 中的表格内容并生成 CSV 文件。
✅ 无需安装 Adobe 或第三方工具 ✅ 高精度识别 PDF 中的表格结构 ✅ 适用于结构化数据的自动化处理场景
本文内容包括:
将 PDF 转换为 CSV 最高效方法是直接提取其中的表格数据,无需中转至 Excel 等中间格式。这种方式不仅处理速度快,而且结构清晰,尤其适用于发票、银行对账单、报表等结构化文档。通过少量代码即可获得精准的 CSV 输出结果,非常适合自动化处理和数据分析流程。
在开始编写代码前,先通过 pip 安装所需库:
pip install spire.pdf
from spire.pdf import PdfDocument, PdfTableExtractor
import csv
import os
# 加载 PDF 文件
pdf = PdfDocument()
pdf.LoadFromFile("Sample.pdf")
# 创建表格提取器
extractor = PdfTableExtractor(pdf)
# 创建输出目录(如不存在)
os.makedirs("output/Tables", exist_ok=True)
# 遍历每一页
for page_index in range(pdf.Pages.Count):
# 提取当前页中的表格
tables = extractor.ExtractTable(page_index)
for table_index, table in enumerate(tables):
table_data = []
# 遍历所有行列
for row in range(table.GetRowCount()):
row_data = []
for col in range(table.GetColumnCount()):
# 获取并清理单元格内容
cell_text = table.GetText(row, col).replace("\n", "").strip()
row_data.append(cell_text)
table_data.append(row_data)
# 将表格写入 CSV 文件
output_path = os.path.join("output", "Tables", f"Page{page_index + 1}-Table{table_index + 1}.csv")
with open(output_path, "w", newline="", encoding="utf-8") as csvfile:
writer = csv.writer(csvfile)
writer.writerows(table_data)
# 释放资源
pdf.Dispose()
转换结果:

PdfTableExtractor 是 Spire.PDF for Python 提供的实用类,用于从 PDF 页面中识别并提取表格结构。与普通文本提取不同,它保留了行列的对应关系,确保生成的 CSV 文件结构清晰,数据准确,非常适合进行 PDF 表格到 CSV 的转换。
相关文章推荐:如何使用 Python 将 PDF 转换为 Excel 文件(XLSX)
并非所有 PDF 文件都包含标准的表格结构,针对如下几种情况,仍可使用 Python 实现高效转换:
可使用 Python 提取文本后,按逻辑划分为“表格式”结构,再写入 CSV 文件。适用于报告、说明文档等类型的 PDF。
对于图像型 PDF,可结合 OCR(光学字符识别)技术识别图中文字,再提取并整理为表格格式并保存为 CSV。
Spire.PDF for Python 是一款功能丰富的 PDF 处理库,专为开发者设计,能够灵活嵌入至报表生成、数据分析、ETL 流程等自动化系统中。
主要优势包括:
可以。Spire.PDF 提供了完整的接口支持,能够直接提取 PDF 中的表格并保存为 CSV,也可以选择先转为 Excel 后再导出为 CSV,全程无需 Adobe Acrobat 或其他工具。
推荐使用 Spire.PDF 提供的 PdfTableExtractor 类。它可自动识别每页中的所有表格结构,并通过简洁的代码导出为结构化的 CSV 文件,适用于发票、财务报表等常见业务场景。
不需要。Spire.PDF for Python 是完全独立的 PDF 库,不依赖 Adobe Acrobat 或任何其他外部软件,可在纯 Python 环境中完成 PDF 的读取、提取、转换等操作。
使用 Python 将 PDF 转换为 CSV,不再是繁琐的手工任务。借助 Spire.PDF for Python,您可以:
Spire.PDF for Python 提供免费版,适用于日常基础任务。如需使用更多高级功能,可联系销售申请免费评估授权。
文本文件(.txt)作为一种常见的数据存储形式,因简单易用而被广泛应用,但相比 Excel 电子表格,其缺乏结构化布局与专业的数据分析能力。将 TXT 文件转换为 Excel 格式,能够显著提升数据组织的规范性、可视化呈现效果及操作便捷性。
尽管手动将文本文件导入 Excel 在处理小规模数据集时具有可行性,但实现自动化转换流程可大幅节省时间并降低人为错误率。Python 凭借其丰富的功能库,为该需求提供了高效解决方案。本文将详细介绍如何借助 Spire.XLS for Python 库在 Python 中将 TXT 文本文件转换为 Excel 表格。
安装 Python 和 Spire.XLS
pip install Spire.XLS
准备 TXT 文本文件
确保您的文本文件采用一致的结构,通常行与行之间用换行符隔开,列与列之间用分隔符(如逗号、制表符或空格)隔开。一个简单示例文本文件如下所示:

步骤 1:导入所需模块
从 Spire.XLS for Python中导入以下所需的类:
from spire.xls import *
from spire.xls.common import *
步骤 2:读取并解析 TXT 文件
读取文本文件,并使用 Python 内置函数将其分成行和列。本例中的分隔符为制表符(Tab):
with open("生产表.txt", "r", encoding='utf-8') as file:
lines = file.readlines()
data = [line.strip().split("\t") for line in lines]
注意: 如果使用了不同的分隔符,请替换 split() 方法的参数 "\t" (例如,空格为 split(" "))。
步骤 3:创建 Excel 工作簿
初始化Workbook工作簿对象并访问第一个工作表:
workbook = Workbook()
sheet = workbook.Worksheets[0]
步骤 4:将数据写入工作表
遍历TXT文件中的数据并填充到相应 Excel 单元格:
for row_num, row_data in enumerate(data):
for col_num, cell_data in enumerate(row_data):
sheet.Range[row_num + 1, col_num + 1].Value = cell_data
sheet.Range[1, col_num + 1].Style.Font.IsBold = True
第 5 步:保存 Excel 文件
将工作簿导出为 XLSX 文件(旧格式也可使用 .xls):
workbook.SaveToFile("TXT转Excel.xlsx", ExcelVersion.Version2016)
from spire.xls import *
from spire.xls.common import *
# 读取TXT文本数据
with open("生产表.txt", "r", encoding='utf-8') as file:
lines = file.readlines()
# 按指定分隔符拆分数据
data = [line.strip().split("\t") for line in lines]
# 创建Excel工作簿
workbook = Workbook()
# 获取第一张工作表
sheet = workbook.Worksheets[0]
# 遍历文本文件中的每一行数据
for row_num, row_data in enumerate(data):
for col_num, cell_data in enumerate(row_data):
# 将数据写入相应单元格
sheet.Range[row_num + 1, col_num + 1].Value = cell_data
# 加粗标题行
sheet.Range[1, col_num + 1].Style.Font.IsBold = True
# 自适应列宽
sheet.AllocatedRange.AutoFitColumns()
# 保存为Excel (.xlsx 或.xls) 文件
workbook.SaveToFile("TXT转Excel.xlsx", ExcelVersion.Version2016)
workbook.Dispose()
生成的Excel 工作簿:

使用 Spire.XLS 在 Python 中将 TXT 文件转换为 Excel,可实现自动执行数据工作流,并节省时间和减少人工操作。无论您是处理日志、调查结果还是财务记录,这种方法都能确保结构化、格式化的输出,以便随时进行分析。
进阶技巧: 探索 Spire.XLS 的高级功能,如图表、数据透视表和加密,以进一步增强 Excel 文件。
可以,该Python Excel 库针对性能进行了优化,可以高效处理大型文件。但是,请确保您的系统有足够的内存来处理超大数据集(如数百万行)。为获得最佳效果,请分块处理数据或使用批处理操作。
可以,Spire.XLS 可读取 Excel 单元格并将其值写入文本文件。可点击该文章获取详细教程: 用 Python 将 Excel 转换为 TXT文件
本示例中的文本文件使用了utf-8 编码,对于其他编码类型可以通过修改encoding参数来指定:
# GBK编码
with open("示例.txt", "r", encoding='gbk') as file:
lines = file.readlines()
# GB2312编码
with open("示例.txt", "r", encoding='gb2312') as file:
lines = file.readlines()
# UTF-16编码
with open("示例.txt", "r", encoding='utf-16') as file:
lines = file.readlines()
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
Spire.Office 10.5.0 已正式发布。该版本新增了一些功能,如Spire.Doc 支持写出为 MHTML 格式文件;Spire.XLS支持检测并删除Excel中的重复行; Spire.PDF 支持使用 .NET Standard DLL 在 Window 和 Linux 系统中进行打印; Spire.Presentation支持在PPT表格的单元格中插入公式。除此之外,一些在操作Word、Excel、PDF和PPT文档时出现的问题也得以成功解决。更多新功能及问题修复详情如下。
该版本涵盖了最新版的Spire.Doc、Spire.PDF、Spire.XLS、Spire.Presentation、Spire.DataExport、Spire.Barcode、Spire.DocViewer、Spire.PDFViewer、Spire.OfficeViewer、Spire.Email。
版本信息如下:
https://www.e-iceblue.cn/Downloads/Spire-Office-NET.html
新功能:
调整::
HarfBuzzSharp -> 8.3.0.1, SkiaSharp -> 3.116.1
<PackageReference Include="HarfBuzzSharp" Version="8.3.0.1" />
<PackageReference Include="SkiaSharp" Version="3.116.1" />
<PackageReference Include="System.Buffers" Version="4.5.1" />
<PackageReference Include="System.Memory" Version="4.5.5" />
<PackageReference Include="Microsoft.Win32.Registry" Version="4.5.0" />
<PackageReference Include="System.Security.Cryptography.Pkcs" Version="4.5.0" />
<PackageReference Include="System.Security.Cryptography.Xml" Version="4.7.1" />
<PackageReference Include="System.Security.Permissions" Version="4.5.0" />
<PackageReference Include="System.Text.Encoding.CodePages" Version="4.5.0" />
System.Drawing.Common >= 9.0.0
System.Security.Permissions >= 9.0.0
System.Text.Encoding.CodePages >= 9.0.0
System.Security.Cryptography.Pkcs >= 9.0.0
System.Security.Cryptography.Xml >= 9.0.0
HarfBuzzSharp >=8.3.0.1
问题修复:
新功能:
workbook.Worksheets[0].Range["E9"].Formula = "=RANK.AVG(10,A1:A6)";
//Default descending order
workbook.Worksheets[0].Range["E9"].Formula = "=RANK.EQ(10,A1:A6)";
workbook.Worksheets[0].Range["D2"].Formula = "=PERCENTILE.INC(\"\", 0.3)";
workbook.Worksheets[0].Range["D2"].Formula = "=PERCENTILE.EXC(\"\", 0.3)";
workbook.Worksheets[0].Range["D2"].Formula = "=BINOM.DIST(A7, A11, A12, FALSE)";
workbook.Worksheets[0].Range["D2"].Formula = "=BINOM.INV(A7, A12, A13)";
workbook.Worksheets[0].Range["C10"].Formula = "=NEGBINOM.DIST(10,5,1,TRUE)";
workbook.Worksheets[0].Range["C6"].Formula = "=BINOM.DIST.RANGE(10, 2, 5)";
workbook.Worksheets[0].Range["C7"].Formula = "=BETA.DIST(3, 0, 5, TRUE, 1, 5)";
workbook.Worksheets[0].Range["C7"].Formula = "=BETA.INV(0.685470581, 8, -1, 1, 3)";
workbook.Worksheets[0].Range["B3"].Formula = "=ROUNDBANK(1245585, -1)";
workbook.Worksheets[0].Range["B3"].Formula = "=GAMMA(ss)";
workbook.Worksheets[0].Range["B10"].Formula = "=GAMMA.DIST(10.0001131, 9, 0, TRUE)";
workbook.Worksheets[0].Range["B10"].Formula = "=GAMMA.INV(0.068094, 0, 2)";
workbook.Worksheets[0].Range["J16"].Formula = "=TAKE(A1:F6,3)";
workbook.Worksheets[0].Range["G26"].Formula = "=HSTACK(E1:F7,G1:G6)";
Workbook workbook = new Workbook();
workbook.LoadFromFile(@"in.xlsx");
Worksheet sheet= workbook.Worksheets[0];
AutoFitterOptions options = new AutoFitterOptions();
options.AutoFitMergedCells = true;
// 第一个参数是合并后的行
sheet.AutoFitRow(9, 1, sheet.LastColumn, options);
workbook.SaveToFile(@"out.xlsx", Spire.Xls.FileFormat.Version2016);
workbook.Dispose();
sheet.Range["C2"].Formula = "=GAUSS(A1)";
sheet.Range["C3"].Formula = "=LOGNORM.DIST(A2, A3, A4, A5)";
sheet.Range["C4"].Formula = "=GAMMALN.PRECISE(1.5)";
sheet.Range["C5"].Formula = "=LOGNORM.INV(0.5, 0, 1)";
// 删除工作表中的重复行
sheet.RemoveDuplicates();
// 删除指定单元格范围内的重复行
sheet.RemoveDuplicates(int startRow, int startColumn, int endRow, int endColumn);
// 根据特定列和标题删除重复行
sheet.RemoveDuplicates(int startRow, int startColumn, int endRow, int endColumn, boolean hasHeaders, int[] columnOffsets)
sheet.Range["A45"].Formula = "=TRIMRANGE(A1:H10, 1, 1)";
sheet.Range["B4"].Formula = "=ERF.PRECISE(1)";
sheet.Range["B4"].Formula = "=ERFC.PRECISE(NULL)";
sheet.Range["B9"].Formula = "=PERMUTATIONA(A5,A5)";
问题修复:
新功能:
// 加载PDF文档
PdfDocument doc = new PdfDocument();
doc.LoadFromFile(inputFile);
// 创建StringBuilder类的对象
StringBuilder sb = new StringBuilder();
// 获取文档中的表单
PdfFormWidget formWidget = doc.Form as PdfFormWidget;
// 遍历每一个表单域
for (int i = 0; i < formWidget.FieldsWidget.List.Count; i++)
{
PdfField field = formWidget.FieldsWidget.List[i] as PdfField;
// 获取ButtonField
if (field is PdfButtonWidgetFieldWidget)
{
PdfButtonWidgetFieldWidget buttonField = field as PdfButtonWidgetFieldWidget;
// 获取表单域名
string filename = buttonField.Name;
// 获取动作
PdfAction action = buttonField.Actions.MouseDown;
if (buttonField.Actions.MouseDown != null && buttonField.Actions.MouseDown is PdfHideAction)
{
var btnAction = (PdfHideAction)buttonField.Actions.MouseDown;
sb.AppendLine(filename + "-MouseDown-Hide-" + btnAction.IsHide.ToString());
sb.AppendLine(filename + "-MouseDown-fname-" + btnAction.FieldName[0].ToString());
}
}
}
File.WriteAllText(outputFile, sb.ToString());
doc.Dispose();
PdfDocument doc = new PdfDocument();
doc.LoadFromFile(pdffile);
doc.PrintSettings.SelectPageRange(1, 5);
if(doc.PrintSettings.CanDuplex)
{
doc.PrintSettings.Duplex = PdfDuplex.Vertical;
}
doc.Print();
问题修复:
新功能:
Presentation ppt = new Presentation();
ppt.LoadFromFile(inputFile);
List dataList = ppt.Slides[0].Shapes[1].CustomerDataList;
Console.WriteLine(dataList.Count);
for(int i = 0; i < dataList.Count; i++)
{
string name = dataList[i].Name;
string content = dataList[i].XML;
File.WriteAllText(outputFile + name, content);
}
// 创建PPT文档
Presentation presentation = new Presentation();
Double[] widths = new double[] { 100, 100, 150, 100, 100 };
Double[] heights = new double[] { 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15 };
// 添加表格
ITable table = presentation.Slides[0].Shapes.AppendTable(presentation.SlideSize.Size.Width / 2 - 275, 90, widths, heights);
String[,] dataStr = new String[,]{
{"Name", "Capital", "Continent", "Area", "Population"},
{"Venezuela", "Caracas", "South America", "912047", "19700000"},
{"Bolivia", "La Paz", "South America", "1098575", "7300000"},
{"Brazil", "Brasilia", "South America", "8511196", "150400000"},
{"Canada", "Ottawa", "North America", "9976147", "26500000"},
{"Chile", "Santiago", "South America", "756943", "13200000"},
{"Colombia", "Bagota", "South America", "1138907", "33000000"},
{"Cuba", "Havana", "North America", "114524", "10600000"},
{"Ecuador", "Quito", "South America", "455502", "10600000"},
{"Paraguay", "Asuncion","South America", "406576", "4660000"},
{"Peru", "Lima", "South America", "1285215", "21600000"},
{"Jamaica", "Kingston", "North America", "11424", "2500000"},
{"Mexico", "Mexico City", "North America", "1967180", "88600000"}
};
// 在表格中添加数据
for (int i = 0; i < 13; i++)
for (int j = 0; j < 5; j++)
{
//Fill the table with data
table[j, i].TextFrame.Text = dataStr[i, j];
//Set the Font
table[j, i].TextFrame.Paragraphs[0].TextRanges[0].LatinFont = new TextFont("Arial Narrow");
}
// 设置对齐方式
for (int i = 0; i < 5; i++)
{
table[i, 0].TextFrame.Paragraphs[0].Alignment = TextAlignmentType.Center;
}
string latexMathCode = @"x^{2}+\sqrt{x^{2}+1}=2";
table[2, 3].TextFrame.Paragraphs.AddParagraphFromLatexMathCode(latexMathCode);
// 设置表格样式
table.StylePreset = TableStylePreset.LightStyle3Accent1;
// 保存结果文件
presentation.SaveToFile("Output.pptx", FileFormat.Pptx2010);
Presentation ppt = new Presentation();
ppt.Slides[0].Shapes.AddFromSVGAsShapes(file.FullName); ppt.SaveToFile(fileName + ".pptx", FileFormat.Pptx2013); ppt.Dispose();
问题修复:
问题修复:
调整::
HarfBuzzSharp->8.3.0.1、SkiaSharp->3.116.1调整::
HarfBuzzSharp->8.3.0.1、SkiaSharp->3.116.1
其中 netstandard 引用调整如下:
<PackageReference Include="HarfBuzzSharp" Version="8.3.0.1" />
<PackageReference Include="SkiaSharp" Version="3.116.1" />
<PackageReference Include="System.Buffers" Version="4.5.1" />
<PackageReference Include="System.Memory" Version="4.5.5" />
<PackageReference Include="Microsoft.Win32.Registry" Version="4.5.0" />
<PackageReference Include="System.Text.Encoding.CodePages" Version="4.7.0" />
<PackageReference Include="System.Security.Cryptography.Pkcs" Version="4.7.0" />
<PackageReference Include="System.Security.Cryptography.Xml" Version="4.7.1" />
<PackageReference Include="System.Security.Permissions" Version="4.7.0" />
调整::
HarfBuzzSharp->8.3.0.1、SkiaSharp->3.116.1Spire.Doc 13.5.11 现已正式发布。最新版本增强了从 Word 到 PDF 的转换功能。此外,本次更新还成功修复了一些已知问题,例如内容控件的值无法修改的问题。更多详情请查阅下方内容。
问题修复: