Spire.Doc for Python 12.4.0 已发布。本次更新新增支持 macOS 操作系统。详情请阅读以下内容。
新功能:
在 Microsoft Excel 中,文本对齐方式和文本方向是优化单元格内文本呈现的重要格式选项。文本对齐方式决定单元格内文本的水平或垂直位置,而文本方向控制文本的倾斜角度或显示方向。通过灵活地利用这些格式设置选项,你可以自定义单元格内文本的外观,从而创建出专业且具有视觉吸引力的工作表。这篇文章将介绍如何使用 Spire.XLS for Python 和 Python 在 Excel 中设置文本对齐方式和文本方向。
本方案需要 Spire.XLS for Python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它轻松安装到 Windows 中。
pip install Spire.XLS
如果您不清楚如何安装,请参考: 如何在 Windows 中安装 Spire.XLS for Python
Spire.XLS for Python 提供了 CellRange.Style.HorizontalAlignment 和 CellRange.Style.VerticalAlignment 属性,使你能够自定义单个单元格或单元格区域中文本的水平和垂直对齐方式。此外,它还提供了 CellRange.Style.Rotation 属性,允许你通过对单元格应用旋转来更改文本的方向。详细步骤如下:
from spire.xls import *
from spire.xls.common import *
# 创建Workbook对象
workbook = Workbook()
# 加载Excel文件
workbook.LoadFromFile("示例.xlsx")
# 获取第一个工作表
sheet = workbook.Worksheets[0]
# 将特定单元格内文本的水平对齐方式设置为左对齐
sheet.Range["B2"].Style.HorizontalAlignment = HorizontalAlignType.Left
# 将特定单元格内文本的水平对齐方式设置为居中对齐
sheet.Range["B3"].Style.HorizontalAlignment = HorizontalAlignType.Center
# 将特定单元格内文本的水平对齐方式设置为右对齐
sheet.Range["B4"].Style.HorizontalAlignment = HorizontalAlignType.Right
# 将特定单元格内文本的水平对齐方式设置为常规对齐
sheet.Range["B5"].Style.HorizontalAlignment = HorizontalAlignType.General
# 将特定单元格内文本的垂直对齐方式设置为顶部对齐
sheet.Range["B6"].Style.VerticalAlignment = VerticalAlignType.Top
# 将特定单元格内文本的垂直对齐方式设置为居中对齐
sheet.Range["B7"].Style.VerticalAlignment = VerticalAlignType.Center
# 将特定单元格内文本的垂直对齐方式设置为底部对齐
sheet.Range["B8"].Style.VerticalAlignment = VerticalAlignType.Bottom
# 通过分配旋转角度值来更改特定单元格内的文本方向
sheet.Range["B9"].Style.Rotation = 45
sheet.Range["B10"].Style.Rotation = 90
# 保存结果文件
workbook.SaveToFile("文本对齐和文本方向.xlsx", ExcelVersion.Version2016)
workbook.Dispose()

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
在现代办公环境中,Microsoft Word 已经成为了我们日常工作和学习中不可或缺的一部分。无论是撰写报告、制作简历还是设计宣传资料,Word 都为我们提供了丰富的功能和工具。其中,添加形状的功能尤其受到广大用户的喜爱,因为它能够让我们轻松地为文档增添视觉上的吸引力和表现力。对形状元素的操作是 Spire.Doc 功能亮点之一,本文将向您介绍如何使用 Spire.Doc for Python 添加或删除 Word 中的形状。
本教程需要 Spire.Doc for Python 和 plum-dispatch v1.7.4。您可以通过以下 pip 命令将它们轻松安装到 Windows 中。
pip install Spire.Doc
如果您不确定如何安装,请参考此教程:如何在 Windows 中安装 Spire.Doc for Python
Spire.Doc for Python 支持添加多种形状,如矩形、梯形、三角形、箭头、线条、表情符号等多种预定义形状类型。通过调用 Paragraph.AppendShape(width:float,height:float,shapeType:'ShapeType') 方法,不仅可以轻松插入这些形状到文档中的任意位置,还可以自定义形状的各种属性,如填充颜色、边框样式、旋转角度以及透明度等,以满足不同的排版需求和视觉效果。以下是详细步骤:
from spire.doc import *
from spire.doc.common import *
# 创建一个新的Document对象
doc = Document()
# 在文档中添加一个新节
sec = doc.AddSection()
# 在新节中添加一个段落
para = sec.AddParagraph()
# 在段落中添加一个矩形形状,宽高均为60
shape1 =para.AppendShape(60, 60,ShapeType.Rectangle)
# 定义形状的填充色
shape1.FillColor = Color.get_YellowGreen()
# 定义边框颜色
shape1.StrokeColor = Color.get_Gray()
# 定义边框样式和宽度
shape1.LineStyle = ShapeLineStyle.Single
shape1.StrokeWeight = 1
# 设置形状基于页面的水平和垂直位置
shape1.HorizontalOrigin = HorizontalOrigin.Page
shape1.HorizontalPosition = 100
shape1.VerticalOrigin = VerticalOrigin.Page
shape1.VerticalPosition = 200
# 类似地,在同一段落中添加一个三角形形状,设置其属性
shape2 =para.AppendShape(60, 60,ShapeType.Triangle)
shape2.FillColor = Color.get_Green()
shape2.StrokeColor = Color.get_Gray()
shape2.LineStyle = ShapeLineStyle.Single
shape2.StrokeWeight = 1
shape2.HorizontalOrigin = HorizontalOrigin.Page
shape2.HorizontalPosition = 200
shape2.VerticalOrigin = VerticalOrigin.Page
shape2.VerticalPosition = 200
# 添加一个箭头形状,并设置其属性
shape3 =para.AppendShape(60, 60,ShapeType.Arrow)
shape3.FillColor = Color.get_SeaGreen()
shape3.StrokeColor = Color.get_Gray()
shape3.LineStyle = ShapeLineStyle.Single
shape3.StrokeWeight = 1
shape3.HorizontalOrigin = HorizontalOrigin.Page
shape3.HorizontalPosition = 300
shape3.VerticalOrigin = VerticalOrigin.Page
shape3.VerticalPosition = 200
# 添加一个笑脸形状,并设置其属性
shape4=para.AppendShape(60, 60,ShapeType.SmileyFace)
shape4.FillColor = Color.get_LightGreen()
shape4.StrokeColor = Color.get_Gray()
shape4.LineStyle = ShapeLineStyle.Single
shape4.StrokeWeight = 1
shape4.HorizontalOrigin = HorizontalOrigin.Page
shape4.HorizontalPosition = 400
shape4.VerticalOrigin = VerticalOrigin.Page
shape4.VerticalPosition = 200
# 保存文档
outputFile = "添加形状.docx"
doc.SaveToFile(outputFile, FileFormat.Docx2016)
# 释放资源
doc.Close()

Spire.Doc for Python 不仅提供对单一形状(如矩形、圆形、线条等)的添加功能,还支持创建和管理组合形状。组合形状是一种特殊的形状集合,它可以将多个独立的形状组织在一起形成一个整体,共享相同的变换属性(如位置、旋转角度等)。下面是具体的操作步骤:
from spire.doc import *
from spire.doc.common import *
# 创建一个Document对象
doc = Document()
# 向文档中添加一个章节
sec = doc.AddSection()
# 在章节中添加一个段落
para = sec.AddParagraph()
# 在段落中添加一个形状组,并指定其水平位置
shapegroup = para.AppendShapeGroup(375, 350)
shapegroup.HorizontalPosition = 180
# 计算形状组的相对单位比例X和Y,便于后续元素尺寸定位
X = float((shapegroup.Width / 1000.0))
Y = float((shapegroup.Height / 1000.0))
# 创建一个圆角矩形文本框
txtBox = TextBox(doc)
# 设置文本框的形状类型
txtBox.SetShapeType(ShapeType.RoundRectangle)
# 设置文本框的宽度和高度
txtBox.Width = 125 / X
txtBox.Height = 54 / Y
# 在文本框内部添加一个段落,并设置其水平对齐方式为居中
paragraph = txtBox.Body.AddParagraph()
paragraph.Format.HorizontalAlignment = HorizontalAlignment.Center
# 向段落中添加文本“步骤一”
paragraph.AppendText("步骤一")
# 设置文本框的水平和垂直位置
txtBox.HorizontalPosition = 19 / X
txtBox.VerticalPosition = 27 / Y
# 设置文本框填充颜色,去除边框线
txtBox.Format.FillColor = Color.FromRgb(153, 255, 255)
txtBox.Format.NoLine = True
# 将文本框添加到形状组的子对象列表中
shapegroup.ChildObjects.Add(txtBox)
# 创建一个向下的箭头形状,指定其形状类型
arrowLineShape = ShapeObject(doc, ShapeType.DownArrow)
# 设置箭头形状的宽度和高度
arrowLineShape.Width = 16 / X
arrowLineShape.Height = 40 / Y
# 设置箭头形状的水平和垂直位置
arrowLineShape.HorizontalPosition = 73 / X
arrowLineShape.VerticalPosition = 87 / Y
# 设置箭头形状的描边颜色
arrowLineShape.StrokeColor = Color.get_CadetBlue()
# 将箭头形状添加到形状组的子对象列表中
shapegroup.ChildObjects.Add(arrowLineShape)
# (后续代码类似,创建钻石形状文本框、向下的箭头形状以及八边形形状文本框,并进行相应的属性设置与定位)
txtBox = TextBox(doc)
txtBox.SetShapeType(ShapeType.Diamond)
txtBox.Width = 125 / X
txtBox.Height = 54 / Y
paragraph = txtBox.Body.AddParagraph()
paragraph.Format.HorizontalAlignment = HorizontalAlignment.Center
paragraph.AppendText("步骤二")
txtBox.HorizontalPosition = 19 / X
txtBox.VerticalPosition = 131 / Y
txtBox.Format.FillColor=Color.FromRgb(0,102,102)
txtBox.Format.NoLine=True
shapegroup.ChildObjects.Add(txtBox)
arrowLineShape = ShapeObject(doc, ShapeType.DownArrow)
arrowLineShape.Width = 16 / X
arrowLineShape.Height = 40 / Y
arrowLineShape.HorizontalPosition = 73 / X
arrowLineShape.VerticalPosition = 192 / Y
arrowLineShape.StrokeColor = Color.get_CadetBlue()
shapegroup.ChildObjects.Add(arrowLineShape)
txtBox = TextBox(doc)
txtBox.SetShapeType(ShapeType.Octagon)
txtBox.Width = 149 / X
txtBox.Height = 59 / Y
paragraph = txtBox.Body.AddParagraph()
paragraph.Format.HorizontalAlignment = HorizontalAlignment.Center
paragraph.AppendText("步骤三")
txtBox.HorizontalPosition = 7 / X
txtBox.VerticalPosition = 236 / Y
txtBox.Format.FillColor=Color.FromRgb(51,204,204)
txtBox.Format.NoLine=True
shapegroup.ChildObjects.Add(txtBox)
# 定义输出文件名
outputFile = "形状组合.docx"
# 保存文档
doc.SaveToFile(outputFile, FileFormat.Docx2016)
# 关闭文档对象,释放资源
doc.Close()

Spire.Doc for Python 支持高效地从 Word 文档中移除单一形状和形状组,下面是详细的步骤。
from spire.doc import *
from spire.doc.common import *
# 创建并加载文档
doc = Document()
doc.LoadFromFile("形状组合.docx")
# 遍历文档的所有章节
for s in range(doc.Sections.Count):
# 获取当前章节
section = doc.Sections[s]
# 遍历章节内所有子对象
for i in range(section.Body.ChildObjects.Count):
# 获取当前子对象
document_object = section.Body.ChildObjects[i]
# 如果当前子对象是段落
if isinstance(document_object, Paragraph):
# 将子对象转换为段落对象
paragraph = document_object
# 初始化内部循环索引
j=0
# 遍历段落内的所有子对象
while j
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
Spire.PDF 10.4.7 现已正式发布。该版本支持获取查找到的文本的字体格式,同时新增了保存文档时的进度回调接口。此外,一些在转换、加载和保存 PDF 文件时出现的问题也得已成功修复。详情请查阅以下内容。
新功能:
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile(inputFile);
PdfPageBase page = pdf.Pages[0];
PdfTextFinder finds = new PdfTextFinder(page);
finds.Options.Parameter = TextFindParameter.None;
List<PdfTextFragment> result = finds.Find("hello");
StringBuilder str = new StringBuilder();
foreach (PdfTextFragment find in result)
{
string text = find.LineText;
string FontName = find.TextStates[0].FontName;
float FontSize = find.TextStates[0].FontSize;
string FontFamily = find.TextStates[0].FontFamily;
bool IsBold = find.TextStates[0].IsBold;
bool IsSimulateBold = find.TextStates[0].IsSimulateBold;
bool IsItalic = find.TextStates[0].IsItalic;
Color color = find.TextStates[0].ForegroundColor;
str.AppendLine(text);
str.AppendLine("FontName: " + FontName);
str.AppendLine("FontSize: " + FontSize);
str.AppendLine("FontFamily: " + FontFamily);
str.AppendLine("IsBold: " + IsBold);
str.AppendLine("IsSimulateBold: " + IsSimulateBold);
str.AppendLine("IsItalic: " + IsItalic);
str.AppendLine("color: " + color);
str.AppendLine(" ");
}
PdfTextReplacer ptr = new PdfTextReplacer(page);
ptr.ReplaceAllText("hello", "New");
File.WriteAllText(outputFile_T, str.ToString());
pdf.SaveToFile(outputFile);
pdf.Dispose();PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile(inputFile);
pdf.RegisterProgressNotifier(new CustomProgressNotifier());
pdf.SaveToFile(outputFile, FileFormat.XPS);
pdf.Close();
public class CustomProgressNotifier :IProgressNotifier
{
StringBuilder str = new StringBuilder();
public void Notify(float progress)
{
str.AppendLine(progress + "%");
File.WriteAllText(outputFile_txt, str.ToString());
}
}问题修复:
在使用 Excel 电子表格时,随着数据集的增加或项目范围的扩大,添加额外的行或列是很常见的。通过插入行和列,您可以快速修改电子表格的结构以容纳新信息。本文将介绍如何使用 Spire.XLS for .NET 通过 C# 在 Excel 中插入行或列。
首先,您需要将 Spire.XLS for .NET 包含的 DLL 文件作为引用添加到您的 .NET 项目中。DLL 文件可以从 此链接 下载,也可以通过 NuGet 安装。
PM> Install-Package Spire.XLS
Spire.XLS for .NET 提供了 Worksheet.InsertRow(int rowIndex) 和 Worksheet.InsertColumn(int columnIndex) 方法,用于在 Excel 工作表中插入空白行和空白列。具体步骤如下:
using Spire.Xls;
namespace InsertRowColumn
{
class Program
{
static void Main(string[] args)
{
//创建Workbook对象
Workbook workbook = new Workbook();
//加载Excel文件
workbook.LoadFromFile("测试.xlsx");
//获取第一张工作表
Worksheet worksheet = workbook.Worksheets[0];
//工作表中插入空白行作为第5行
worksheet.InsertRow(5);
//在工作表中插入空白列作为第4列
worksheet.InsertColumn(4);
//保存结果文件
workbook.SaveToFile("插入行和列.xlsx", ExcelVersion.Version2016);
}
}
}

要在工作表中插入多行和多列,可以使用 Worksheet.InsertRow(int rowIndex, int rowCount) 和 Worksheet.InsertColumn(int columnIndex, int columnCount) 方法。具体步骤如下:
using Spire.Xls;
namespace InsertRowColumn
{
class Program
{
static void Main(string[] args)
{
//创建Workbook对象
Workbook workbook = new Workbook();
//加载Excel文件
workbook.LoadFromFile("测试.xlsx");
//获取第一张工作表
Worksheet worksheet = workbook.Worksheets[0];
//在工作表中插入三行空白行
worksheet.InsertRow(5, 3);
//在工作表中插入两列空白列
worksheet.InsertColumn(4, 2);
//保存结果文件
workbook.SaveToFile("插入多行多列.xlsx", ExcelVersion.Version2016);
}
}
}

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
邮件合并是 Word 文档中一项强大的功能,能够帮助用户能够高效地创建个性化文档。借助邮件合并,用户可以将模板文档与数据源自动合并,从而生成针对每位收件人定制的、既个性化又专业感十足的文档。这项功能在诸如发送个性化电子邮件、生成发票或制作定制营销材料等任务中尤为实用。本文将演示如何通过 Python 代码使用 Spire.Doc for Python 在 Word 文档中创建并执行邮件合并。
本教程需要 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 提供了 Paragraph.AppendField(str: fieldName, FieldType.FieldMergeField) 方法,使得用户能够在文档指定段落中创建邮件合并域。
from spire.doc import *
from spire.doc.common import *
# 创建Document类的一个对象
doc = Document()
# 加载一个Word文档
doc.LoadFromFile("示例.docx")
# 获取一个节
section = doc.Sections.get_Item(1)
# 获取用于添加邮件合并域的段落
para1 = section.Paragraphs.get_Item(0)
para2 = section.Paragraphs.get_Item(1)
para3 = section.Paragraphs.get_Item(2)
para4 = section.Paragraphs.get_Item(3)
# 插入邮件合并域并设置域名称
para1.AppendField("姓名", FieldType.FieldMergeField)
para2.AppendField("年龄", FieldType.FieldMergeField)
para3.AppendField("电话号码", FieldType.FieldMergeField)
para4.AppendField("成员类型", FieldType.FieldMergeField)
# 保存文档
doc.SaveToFile("output/邮件合并域.docx")
doc.Close()

在邮件合并结构创建完成后,可以使用 MailMerge.Execute(List: fieldNames, List: dataSource) 方法执行文档内的邮件合并操作。这将实现基于指定数据源快速生成多个包含唯一内容的 Word 文档。
执行邮件合并并生成个性化文档的具体步骤如下:
from spire.doc import *
from spire.doc.common import *
# 创建一个Document实例
doc = Document()
# 加载一个带有邮件合并域的Word文档
doc.LoadFromFile("output/邮件合并域.docx")
# 获取邮件合并域名称集合
fieldNames = doc.MailMerge.GetMergeFieldNames()
# 指定数据源
dataSource = member_data = [
["Alice Johnson", "35", "+1-555-123-4567", "高级成员"],
["Bob Williams", "42", "+1-555-765-4321", "中级成员"],
["Charlie Brown", "28", "+44-1234-567890", "基础成员"],
]
# 遍历数据源
for i in range(len(dataSource)):
# 执行邮件合并
doc.MailMerge.Execute(fieldNames, dataSource[i])
# 保存文档
doc.SaveToFile(f"output/组织成员/成员-{dataSource[i][0]}.docx")
doc.Close()

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
Spire.Doc for Java 12.4.6 已发布。本次更新新增支持加载、操作和转换 Markdown 文档,同时增强了 Word 到 PDF,HTML 和 SVG 的转换功能。此外,一些已知问题也在该版本中成功修复,如替换书签内容后文档其他内容被改变的问题。详情请阅读以下内容。
新功能:
Document doc = new Document();
//load .md file
doc.loadFromFile("input.md");
//save to .md file
doc.saveToFile("output.md", com.spire.doc.FileFormat.Markdown);
//save to .docx file
//doc.saveToFile("output.docx", com.spire.doc.FileFormat.Docx);
//save to .doc file
//doc.saveToFile("output.doc", com.spire.doc.FileFormat.Doc);
//save to .pdf file
//doc.saveToFile("output.pdf", com.spire.doc.FileFormat.PDF);
doc.close();
Document doc = new Document();
//load .docx file
doc.loadFromFile("input.docx");
//load .doc file
//doc.loadFromFile("input.doc");
//save to .md file
doc.saveToFile("output.md", com.spire.doc.FileFormat.Markdown);
doc.close();问题修复:
段落缩进在书面文件(如论文、报告等)中具有重要的作用,它决定了页面边距与段落文本之间的水平距离。通过设置适当的段落缩进,我们能够提高文档的可读性,并在段落之间营造清晰的视觉区分。这样,段落能够在页面上呈现出整齐有序的样式,让读者更轻松地阅读文件的内容。在本文中,我们将介绍如何使用 Spire.Doc for Python 和 Python 在 Word 文档中设置段落缩进。
本教程需要用到 Spire.Doc for Python 和 plum-dispatch v1.7.4。可以通过以下 pip 命令将它们轻松安装到 Windows 中。
pip install Spire.Doc
如果您不确定如何安装,请参考此教程:如何在 Windows 中安装 Spire.Doc for Python
Microsoft Word 提供了多种段落缩进选项,以使用户能够根据需要对段落进行格式调整。以下为一些常用的缩进类型:
Spire.Doc for Python 支持以上所有缩进类型。下表列出了使用 Spire.Doc for Python 在 Word 中设置不同段落缩进时所用到的一些核心类和方法:
| 名称 | 描述 |
| ParagraphFormat 类 | 表示段落的格式。 |
| ParagraphFormat.SetLeftIndent() 方法 | 设置段落的左缩进值。 |
| ParagraphFormat.SetRightIndent() 方法 | 设置段落的右缩进值。 |
| ParagraphFormat.SetFirstLineIndent() 方法 | 设置首行缩进或悬挂缩进的值。正值表示首行缩进,负值表示悬挂缩进。 |
以下步骤解释了如何使用 Spire.Doc for Python 在 Word 文档中设置段落缩进:
from spire.doc import *
from spire.doc.common import *
# 创建一个 Document 实例
doc = Document()
# 加载一个示例 Word 文档
doc.LoadFromFile(""示例.docx"")
# 获取第一个节
section = doc.Sections.get_Item(0)
# 获取第一个段落并设置左缩进
para1 = section.Paragraphs.get_Item(0)
para1.Format.SetLeftIndent(30)
# 获取第二个段落并设置右缩进
para2 = section.Paragraphs.get_Item(1)
para2.Format.SetRightIndent(30)
# 获取第三个段落并设置首行缩进
para3 = section.Paragraphs.get_Item(2)
para3.Format.SetFirstLineIndent(30)
# 获取第四个段落并设置悬挂缩进
para4 = section.Paragraphs.get_Item(3)
para4.Format.SetFirstLineIndent(-30)
# 将文档保存到文件
doc.SaveToFile(""设置缩进.docx"", FileFormat.Docx2013)
doc.Close()

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
Spire.PDF for Java 10.4.4 现已正式发布。该版本支持获取关键字的字体名和字体大小,并修复了转换后的 PDFA2B 文件未通过验证的问题。详情请查阅以下内容。
新功能:
PdfDocument pdf = new PdfDocument();
pdf.loadFromFile(inputFile);
PdfPageBase page = pdf.getPages().get(0);
PdfTextFinder finds = new PdfTextFinder(page);
finds.getOptions().setTextFindParameter(EnumSet.of(TextFindParameter.IgnoreCase));
List<PdfTextFragment> result = finds.findAllText(page);
StringBuilder str = new StringBuilder();
for (PdfTextFragment find : result)
{
str.append("FontName:"+find.getTextStates()[0].getFontName());
str.append("FontSize:"+find.getTextStates()[0].getFontSize());
str.append("FontFamily:"+find.getTextStates()[0].getFontFamily());
str.append("Bold:"+find.getTextStates()[0].isBold());
str.append("Italic:"+find.getTextStates()[0].isItalic());
str.append("ForegroundColor:"+find.getTextStates()[0].getForegroundColor());
}PdfDocument doc = new PdfDocument();
doc.loadFromFile("input.pdf");
PdfTextReplaceOptions textReplaceOptions = new PdfTextReplaceOptions();
textReplaceOptions.setReplaceType(EnumSet.of(ReplaceActionType.Regex));
PdfPageBase page = doc.getPages().get(0);
PdfTextReplacer textReplacer = new PdfTextReplacer(page);
textReplacer.setOptions(textReplaceOptions);
String regularExpression = "\\bS\\w*L\\b";
textReplacer.replaceAllText(regularExpression, "NEW");
doc.saveToFile("output.pdf");
doc.dispose(); 问题修复:
在 Excel 文档中,下拉框扮演着重要的角色。它们提供了一种便捷的方式来限制用户输入的选项,减少错误和提高数据的准确性。通过下拉框,用户可以从预定义的选项中进行选择,避免输入错误或不一致的数据。此外,下拉框还可以提升文档的可读性和易用性,使用户操作更加流畅和高效。在数据输入和分析过程中,下拉框可以帮助用户快速选择所需信息,节省时间并降低操作的复杂性。本文将介绍如何使用 Spire.XLS for Java 在 Java 项目中给 Excel 文档创建下拉框。
首先,您需要在 Java 程序中添加 Spire.XLS for 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>
通过使用 Spire.XLS,将字符串数组赋值给 CellRange.getDataValidation().setValues() 属性,可以很容易地在单元格中创建下拉框。以下是详细的步骤:
import com.spire.xls.*;
public class SpireSampleDemo {
public static void main(String[] args) {
// 创建一个Workbook对象
Workbook workbook = new Workbook();
// 获取Workbook对象中的第一个Worksheet
Worksheet worksheet = workbook.getWorksheets().get(0);
// 创建一个字符串数组
String[] values = new String[] { "山东省", "四川省", "河南省", "湖北省", "湖南省" };
// 在工作表的A1单元格设置数据验证,限制可选值为values数组中的值
worksheet.getCellRange("A1").getDataValidation().setValues(values);
// 将Workbook对象保存为Excel文件
workbook.saveToFile("使用数组创建下拉框.xlsx", ExcelVersion.Version2016);
// 释放Workbook对象占用的资源
workbook.dispose();
}
}

这个示例展示了如何在数据所在工作表中创建下拉框,需要指定一个数据范围并将其应用于要创建下拉框的单元格即可。以下是详细的步骤:
import com.spire.xls.*;
public class SpireSampleDemo {
public static void main(String[] args) {
// 创建一个新的工作簿对象
Workbook workbook = new Workbook();
// 从文件加载工作簿数据
workbook.loadFromFile("示例1.xlsx");
// 获取工作簿中的第一个工作表
Worksheet worksheet = workbook.getWorksheets().get(0);
// 获取工作表中A3到A8单元格范围
CellRange dataRange = worksheet.getCellRange("A3:A8");
// 将B1单元格设置为下拉框,数据范围为之前获取的范围
worksheet.getCellRange("B1").getDataValidation().setDataRange(dataRange);
// 将工作簿保存到新文件中
workbook.saveToFile("在同一工作表中创建下拉框.xlsx", ExcelVersion.Version2016);
// 释放工作簿资源
workbook.dispose();
}
}

这个示例演示了如何在一个工作表中定义数据范围,并将其应用到另一个工作表的特定单元格。要实现在不同工作表中创建下拉框,需要确保设置 Worksheet.ParentWorkbook.Allow3DRangesInDataValidation = true。以下是详细的步骤:
import com.spire.xls.*;
public class SpireSampleDemo {
public static void main(String[] args) {
// 创建一个Workbook对象
Workbook workbook = new Workbook();
// 从文件加载工作簿
workbook.loadFromFile("示例2.xlsx");
// 获取第一个工作表
Worksheet worksheet1 = workbook.getWorksheets().get(0);
// 获取第二个工作表
Worksheet worksheet2 = workbook.getWorksheets().get(1);
// 允许在数据验证中使用3D范围
worksheet1.getParentWorkbook().setAllow3DRangesInDataValidation(true);
// 定义数据范围
CellRange dataRange = worksheet2.getCellRange("A1:A6");
// 将数据范围应用到工作表1的B1单元格作为数据验证
worksheet1.getCellRange("B1").getDataValidation().setDataRange(dataRange);
// 保存工作簿到文件
workbook.saveToFile("在不同的工作表中创建下拉框.xlsx", ExcelVersion.Version2016);
// 释放工作簿资源
workbook.dispose();
}
}

联动下拉菜单是指根据一个选项的选择,自动调整另一个下拉菜单的内容。这个示例展示了如何在同一个工作表中实现这种联动效果。实现的方式是通过添加 INameRange 对象并设定引用范围,以及设置数据验证的数据范围和公式来实现下拉菜单之间的关联。以下是详细的步骤:
import com.spire.xls.*;
import com.spire.xls.core.*;
public class SpireSampleDemo {
public static void main(String[] args) {
// 创建一个新的工作簿对象
Workbook workbook = new Workbook();
// 从文件加载工作簿
workbook.loadFromFile("示例3.xlsx");
// 获取第一个工作表
Worksheet worksheet1 = workbook.getWorksheets().get(0);
// 获取第二个工作表
Worksheet worksheet2 = workbook.getWorksheets().get(1);
// 添加命名范围对象并设置引用范围
INamedRange namedRange = workbook.getNameRanges().add(worksheet2.getCellRange("A1").getText());
namedRange.setRefersToRange(worksheet2.getCellRange("B2:B7"));
namedRange = workbook.getNameRanges().add(worksheet2.getCellRange("A2").getText());
namedRange.setRefersToRange(worksheet2.getCellRange("C2:C7"));
namedRange = workbook.getNameRanges().add(worksheet2.getCellRange("A3").getText());
namedRange.setRefersToRange(worksheet2.getCellRange("D2:D7"));
namedRange = workbook.getNameRanges().add(worksheet2.getCellRange("A4").getText());
namedRange.setRefersToRange(worksheet2.getCellRange("E2:E7"));
namedRange = workbook.getNameRanges().add(worksheet2.getCellRange("A5").getText());
namedRange.setRefersToRange(worksheet2.getCellRange("F2:F7"));
// 允许数据验证中的3D范围
worksheet1.getParentWorkbook().setAllow3DRangesInDataValidation(true);
// 设置数据验证的数据范围
worksheet1.getCellRange("A2").getDataValidation().setDataRange(worksheet2.getCellRange("A1:A5"));
worksheet1.getCellRange("B2").getDataValidation().setAllowType(CellDataType.User);
// 设置公式为INDIRECT($A$2)
worksheet1.getCellRange("B2").getDataValidation().setFormula1("=INDIRECT($A$2)");
// 将工作簿保存到文件
workbook.saveToFile("在同一个工作表中创建联动的下拉框.xlsx", ExcelVersion.Version2016);
// 释放工作簿资源
workbook.dispose();
}
}

这个示例演示了如何在 Excel 文档中实现不同工作表之间的联动下拉框功能。通过添加 INameRange 对象并设定引用范围,在第一个工作表中设置数据验证的数据范围,在第二个工作表中设置单元格的公式来实现下拉框的联动效果。以下是详细的步骤:
import com.spire.xls.*;
import com.spire.xls.core.*;
public class SpireSampleDemo {
public static void main(String[] args) {
// 创建一个Workbook对象
Workbook workbook = new Workbook();
// 从文件加载工作簿
workbook.loadFromFile("示例4.xlsx");
// 获取第一个工作表
Worksheet worksheet1 = workbook.getWorksheets().get(0);
// 获取第二个工作表
Worksheet worksheet2 = workbook.getWorksheets().get(1);
// 获取数据工作表
Worksheet dataSheet = workbook.getWorksheets().get(2);
// 添加命名范围对象并设置引用范围
INamedRange namedRange = workbook.getNameRanges().add(dataSheet.getCellRange("A2").getText());
namedRange.setRefersToRange(dataSheet.getCellRange("B2"));
namedRange = workbook.getNameRanges().add(dataSheet.getCellRange("A3").getText());
namedRange.setRefersToRange(dataSheet.getCellRange("B3"));
namedRange = workbook.getNameRanges().add(dataSheet.getCellRange("A4").getText());
namedRange.setRefersToRange(dataSheet.getCellRange("B4"));
// 允许数据验证中的3D范围
worksheet1.getParentWorkbook().setAllow3DRangesInDataValidation(true);
// 设置数据验证的数据范围
worksheet1.getCellRange("B1").getDataValidation().setDataRange(dataSheet.getCellRange("A2:A4"));
// 设置第二个工作表的B1单元格的公式
worksheet2.getCellRange("B1").setFormula("=INDIRECT("+worksheet1.getName() +"!B1)");
// 将工作簿保存到文件
workbook.saveToFile("在不同的工作表中创建联动的下拉框.xlsx", ExcelVersion.Version2016);
// 释放工作簿资源
workbook.dispose();
}
}

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