在 Excel 文件中,筛选器(Filter)是一个常用的数据处理工具,可以帮助用户快速按条件筛选数据行。但在数据整理完成、导出、共享或打印之前,往往需要 删除 Excel 工作表中的筛选器,移除列标题中的下拉筛选按钮,并使所有隐藏行重新可见。通过使用 Spire.XLS for .NET,开发者可以在 .NET 程序中高效地删除筛选器,实现批量自动化处理,无需打开 Excel 界面。
本文将介绍如何使用 Spire.XLS for .NET 在 C# 程序中删除 Excel 中的筛选器。
Excel 的自动筛选功能在数据分析中非常有用,但可能会影响数据的展示效果。在下列场景中,移除筛选器能够更好地展示文件中的数据:
简言之,移除 Excel 筛选器能确保数据呈现的完整性,特别是在向客户、团队或报告系统传递文档时,能够确保信息完整地传达给接收方。
环境配置
首先通过 NuGet 安装 Spire.XLS for .NET 库:
PM> Install-Package Spire.XLS
或安装免费版本(适合轻量级处理):
PM> Install-Package FreeSpire.XLS
也可从官网下载 Spire.XLS for.NET 或 Free Spire.XLS for .NET 后,手动导入到项目中。
移除 Excel 筛选器用到的核心方法与属性
以下代码演示如何使用 Spire.XLS for .NET 在 C# 程序中清除一个 Excel 工作表中的所有筛选器:
using Spire.Xls;
// 创建工作簿实例
Workbook workbook = new Workbook();
// 加载Excel文件
workbook.LoadFromFile("示例.xlsx");
// 获取工作表
Worksheet sheet = workbook.Worksheets[0];
// 清除自动筛选
sheet.AutoFilters.Clear();
// 保存文件
workbook.SaveToFile("output/移除Excel筛选器.xlsx");
workbook.Dispose();
删除所有筛选器前后的 Excel 工作表

Excel 工作表中的筛选器必须应用于单个列或连续的多个列,因此不能只移除中间某一列的筛选器。若需排除某列的筛选,需先清除现有筛选再重置应用筛选器的范围。
下面的 C# 代码示例展示如何使用 Spire.XLS for .NET 重新设置筛选器应用范围:
using Spire.Xls;
// 创建Workbook对象并载入Excel文件
Workbook workbook = new Workbook();
workbook.LoadFromFile("示例.xlsx");
// 获取工作表
Worksheet sheet = workbook.Worksheets[0];
// 先清除所有筛选(避免数据遗漏)
sheet.AutoFilters.Clear();
// 重置筛选范围(示例保留第3-4列)
sheet.AutoFilters.Range = sheet.Range[1, 3, sheet.LastRow, 4];
workbook.SaveToFile("output/重置Excel筛选器范围.xlsx");
workbook.Dispose();

注意:重置筛选范围前需要清除现有筛选器,否则可能导致部分数据被隐藏。
文章推荐:用 C# 在 Excel 工作表中添加筛选器并执行筛选
通过 C# 结合 Spire.XLS for .NET,开发者可以轻松清除 Excel 中的筛选器,快速恢复数据的完整可见性。无论是生成报告、导出文件还是共享数据,自动化处理让一切更高效、更专业。
答:使用 Spire.XLS for .NET 中的 AutoFilters.Clear() 方法即可清除工作表中全部筛选器,一行代码搞定。
答:Excel 的筛选区域必须是连续的列,无法单独取消某列筛选。如需排除某列的筛选,需要先清除所有筛选器,然后通过 AutoFilters.Range 重新设置筛选范围。
答:Free Spire.XLS for .NET 是完全免费的版本,任何人可免费使用,不带水印,适合轻量级Excel处理。如需完整功能,可联系销售申请临时授权使用完整版。
答:不会。使用 Spire.XLS 去除筛选器时,不会删除数据,只是还原了隐藏的行,确保你看到的是完整的工作表内容。
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
在当今数字化时代,Excel 文档已成为企业、个人和组织管理数据、分析信息及共享报表的重要工具。然而,手动编辑 Excel 文档不仅耗时,还容易出错。幸运的是,通过 Spire.XLS for Java 库,您可以轻松实现这些任务的自动化,从而提高效率并减少错误。
本文将全面指导您如何在 Java 中使用 Spire.XLS 编辑 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>
在 Java 中处理 Excel 文件时,最常见的任务之一是读写数据。Spire.XLS for Java 通过 CellRange.getValue() 和 CellRange.setValue() 方法简化了这一流程,使开发者能够轻松获取和设置单个单元格的值。
以下是使用 Java 读写 Excel 文件的步骤:
import com.spire.xls.CellRange;
import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;
public class ReadAndWriteExcel {
public static void main(String[] args) {
// 创建一个 Workbook 对象
Workbook workbook = new Workbook();
// 加载一个 Excel 文件
workbook.loadFromFile("C:\\Users\\Administrator\\Desktop\\Input.xlsx");
// 获取一个特定的工作表
Worksheet worksheet = workbook.getWorksheets().get(0);
// 获取一个特定的单元格
CellRange cell = worksheet.getCellRange("A1");
// 读取单元格的值
String text = cell.getValue();
// 判断单元格的值是否为 "区域"
if (text.equals("Department"))
{
// 更新单元格的值
cell.setValue("地区");
}
// 将工作簿另存为不同的文件
workbook.saveToFile("更新.xlsx", ExcelVersion.Version2016);
// 释放资源
workbook.dispose();
}
}

为 Excel 文档应用格式是创建专业报表的关键步骤。CellRange 类提供了一系列 API,可用于管理字体样式、颜色、单元格背景、对齐方式,以及调整行高和列宽。
按照以下步骤为 Excel 单元格应用样式和格式:
import com.spire.xls.*;
import java.awt.*;
public class ApplyFormatting {
public static void main(String[] args) {
// 创建一个 Workbook 对象
Workbook workbook = new Workbook();
// 加载一个 Excel 文件
workbook.loadFromFile("C:\\Users\\Administrator\\Desktop\\Input.xlsx");
// 获取一个特定的工作表
Worksheet worksheet = workbook.getWorksheets().get(0);
// 获取工作表中包含数据的区域
CellRange allocatedRange = worksheet.getAllocatedRange();
// 遍历行
for (int rowNum = 0; rowNum < allocatedRange.getRowCount(); rowNum++) {
if (rowNum == 0) {
// 为表头行应用单元格颜色
allocatedRange.getRows()[rowNum].getStyle().setColor(Color.black);
// 更改表头行的字体颜色
allocatedRange.getRows()[rowNum].getStyle().getFont().setColor(Color.white);
}
// 为其他行应用交替颜色
else if (rowNum % 2 == 1) {
allocatedRange.getRows()[rowNum].getStyle().setColor(Color.lightGray);
} else if (rowNum % 2 == 0) {
allocatedRange.getRows()[rowNum].getStyle().setColor(Color.white);
}
// 文本居中对齐
allocatedRange.getRows()[rowNum].setHorizontalAlignment(HorizontalAlignType.Center);
allocatedRange.getRows()[rowNum].setVerticalAlignment(VerticalAlignType.Center);
// 设置行高
allocatedRange.getRows()[rowNum].setRowHeight(18);
}
// 遍历列
for (int columnNum = 0; columnNum < allocatedRange.getColumnCount(); columnNum++) {
// 设置列宽
if (columnNum > 0) {
allocatedRange.getColumns()[columnNum].setColumnWidth(12);
}
}
// 将工作簿另存为不同的文件
workbook.saveToFile("设置格式.xlsx", ExcelVersion.Version2016);
// 释放资源
workbook.dispose();
}
}

查找替换功能通过简化数据更新和修正流程,显著提升数据管理效率。借助 Spire.XLS for Java,您可以使用 Worksheet.findString() 方法快速定位包含特定字符串的单元格,并通过 CellRange.setValue() 方法更新其内容。
以下是使用 Java 查找和替换 Excel 文本的详细步骤:
import com.spire.xls.CellRange;
import com.spire.xls.ExcelVersion;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;
public class FindAndReplace {
public static void main(String[] args) {
// 创建一个 Workbook 对象
Workbook workbook = new Workbook();
// 加载一个 Excel 文件
workbook.loadFromFile("C:\\Users\\Administrator\\Desktop\\Input.xlsx");
// 获取一个特定的工作表
Worksheet worksheet = workbook.getWorksheets().get(0);
// 定义一个字符串数组用于替换
String[] new_strings = new String[] { "西部厂区", "东部厂区", "北部厂区", "南部厂区", "中部厂区"};
// 定义一个字符串数组,将在 Excel 表中被替换
String[] old_strings = new String[] { "西部", "东部", "北部", "南部", "中部" };
// 遍历旧字符串
for (int i = 0; i < old_strings.length; i++)
{
// 查找包含当前旧字符串的单元格
CellRange cell = worksheet.findString(old_strings[i], false, false);
// 用对应的新字符串替换找到的单元格中的文本
cell.setValue(new_strings[i]);
}
// 将工作簿另存为不同的文件
workbook.saveToFile("替换文本.xlsx", ExcelVersion.Version2016);
// 释放资源
workbook.dispose();
}
}

除了基本的文件操作外,Spire.XLS for Java 还提供了一系列处理 Excel 文件的高级功能。这些方法可帮助您自动化复杂任务、执行计算并创建动态报表。
以下是使用 Java 在 Excel 中添加公式和创建图表的步骤:
import com.spire.xls.*;
public class AddFormulaAndChart {
public static void main(String[] args) {
// 创建一个 Workbook 对象
Workbook workbook = new Workbook();
// 加载一个 Excel 文件
workbook.loadFromFile("C:\\Users\\Administrator\\Desktop\\Input.xlsx");
// 获取一个特定的工作表
Worksheet worksheet = workbook.getWorksheets().get(0);
// 获取所有已分配范围
CellRange allocatedRange = worksheet.getAllocatedRange();
// 遍历行
for (int rowNum = 0; rowNum < allocatedRange.getRowCount(); rowNum++) {
if (rowNum == 0) {
// 在单元格 F1 中写入文本
worksheet.getRange().get(rowNum + 1, 6).setText("年度");
// 为单元格应用样式
worksheet.getRange().get(rowNum + 1, 6).getStyle().getFont().isBold(true);
worksheet.getRange().get(rowNum + 1, 6).getStyle().getFont().setFontName("宋体");
worksheet.getRange().get(rowNum + 1, 6).getStyle().getFont().setSize(12);
worksheet.getRange().get(rowNum + 1, 6).getStyle().setHorizontalAlignment(HorizontalAlignType.Center);
} else {
// 为 F2 到 F6 的单元格添加公式
worksheet.getRange().get(rowNum + 1, 6).setFormula("=SUM(B" + (rowNum + 1) + ":E" + (rowNum + 1) + ")");
// 为单元格应用样式
worksheet.getRange().get(rowNum + 1, 6).getStyle().getFont().setFontName("Times New Roman");
worksheet.getRange().get(rowNum + 1, 6).getStyle().getFont().setSize(12);
worksheet.getRange().get(rowNum + 1, 6).getStyle().setHorizontalAlignment(HorizontalAlignType.Center);
}
}
// 添加一个聚类柱状图
Chart chart = worksheet.getCharts().add(ExcelChartType.ColumnClustered);
// 设置图表的数据范围
chart.setDataRange(worksheet.getCellRange("A1:E6"));
chart.setSeriesDataFromRange(false);
// 设置图表的位置
chart.setLeftColumn(1);
chart.setTopRow(7);
chart.setRightColumn(7);
chart.setBottomRow(18);
// 设置并格式化图表标题
chart.setChartTitle("区域季度生产量");
chart.getChartTitleArea().setSize(13);
chart.getChartTitleArea().isBold(true);
// 将工作簿另存为不同的文件
workbook.saveToFile("添加公式和图表.xlsx", ExcelVersion.Version2016);
// 释放资源
workbook.dispose();
}
}

如果您需要去除生成文档中的评估提示或解除功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
Spire.Doc for Python 13.4.6 现已正式发布。最新版本支持在段落中匹配查找所有关键字。此外,本次更新还成功修复了一些已知问题,例如 Word 转 TXT 时,文本乱码的问题。更多详情请查阅下面的内容。
新功能:
#Create word document
document = Document()
#Load the document from disk.
document.LoadFromFile(inputFile)
#Insert the paragraphs of document
for i in range(document.Sections.Count):
section = document.Sections.get_Item(i)
for j in range(section.Paragraphs.Count):
paragraph = section.Paragraphs.get_Item(j)
textSelections = paragraph.FindAllString("The", False, True)
for selection in textSelections:
#highlight
selection.GetAsOneRange().CharacterFormat.HighlightColor = Color.get_Yellow()
#Save doc file.
document.SaveToFile(outputFile, FileFormat.Docx)
def AppendCharts(section, chartType, width, heigh):
section.AddParagraph().AppendText("{0:s} chart.".format(chartType))
newPara = section.AddParagraph()
# Support adding the BarChart/LineChart/ColumnChart/Surface3DChart/BubbleChart/PieChart/ScatterChart type
shape = newPara.AppendChart(chartType, float(width), float(heigh))
chart = shape.Chart
chart.Series.Clear()
chart.Series.Add("E-iceblue Test Series 1", ["Word", "PDF", "Excel", "GoogleDocs", "Office"], [
float(1900000), float(850000), float(2100000), float(600000), float(1500000)])
chart.Series.Add("E-iceblue Test Series 2", ["Word", "PDF", "Excel", "GoogleDocs", "Office"], [
float(900000), float(50000), float(1100000), float(400000), float(2500000)])
chart.Series.Add("E-iceblue Test Series 3", ["Word", "PDF", "Excel", "GoogleDocs", "Office"], [
float(500000), float(820000), float(1500000), float(400000), float(100000)])
#Create word document
document = Document()
#Add section
section = document.AddSection()
AppendCharts(section, ChartType.Bar, 500, 300)
#Save
document.SaveToFile("AppendCharts.docx", FileFormat.Docx)
document = Document()
document.LoadFromFile(inputFile)
textSelections = document.FindAllString("Ceshi", True, True)
sb = []
ranges = []
for selection in textSelections:
tr = selection.GetAsOneRange()
ranges.append(tr)
layoutDoc = FixedLayoutDocument(document)
for tr in ranges:
spans = layoutDoc.GetLayoutEntitiesOfNode(tr)
for i in range(spans.Count):
tempSpan = spans[i]
fs = FixedLayoutSpan(tempSpan)
tempfl = fs.Parent
line = FixedLayoutLine(tempfl)
if line.Parent.Type == LayoutElementType.Column:
lines = line.Parent.Lines
index = lines.IndexOf(line)
# print(index)
sb.append("position:" + str(index))
File.AppendAllText(outputFile, sb)
document = Document()
#Load the file from disk.
document.LoadFromFile(inputFile)
document.TrackChanges = True
document.StartTrackRevisions("user")
range = document.LastParagraph.AppendText("Revise4")
range.InsertRevision.Author = "test01"
document.LastParagraph.Text = "remove"
range.DeleteRevision.Author = "test01"
document.StopTrackRevisions()
document.SaveToFile(outputFile)
Document doc = new Document();
doc.LoadFromFile("input.docx");
doc.LayoutOptions.UseHarfBuzzTextShaper = true;
doc.SaveToFile("result.pdf", Spire.Doc.FileFormat.PDF);
value1 = Document.IsEncrypted(inputFile_1)doc = Document()
section=doc.AddSection()
officeMath = OfficeMath(doc)
officeMath.FromLatexMathCode("x^{2}+\\sqrt{{x^{2}+1}}+1")
officeMath.ToMathMLCode()
问题修复:
Spire.PDF for Android via Java 10.4.0 已发布。本次更新新增支持使用 PdfStandardsConverter 转换时,设置"PreserveAllowedMetadata = true"。详情请阅读以下内容。
新功能:
PdfStandardsConverter converter = new PdfStandardsConverter(stream);
converter.Options.PreserveAllowedMetadata = true;
https://www.e-iceblue.cn/Downloads/pdf-for-android-via-java.html
Spire.XLS 15.4.4 现已发布。该版本新增对多个公式的支持,并且还支持在一行多列的合并单元格设置自适应行高。此外,一些在转换 Excel 到 PDF 和保存文件时出现的问题也已成功被修复。新功能及问题修复详情如下。
新功能:
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)";
问题修复:
Microsoft Excel 是一款强大的数据管理工具,广泛用于数据处理和分析。然而,其专有格式(如 XLS 和 XLSX)在不同平台之间共享时,常常面临兼容性问题。相比之下,Markdown 是一种轻量级的标记语言,因其简洁且易于阅读的特性,广泛应用于技术文档、维基页面和 GitHub 等平台。
将 Excel 文件转换为 Markdown 格式,可以轻松地将结构化数据嵌入到文档、README 文件或静态网页中。这不仅有效解决了 Excel 文件跨平台共享的问题,还能让数据的展示更加简洁易懂,非常适合于快速生成和发布文档。本文将详细介绍如何使用 C# 和 Spire.XLS for .NET 库将 Excel XLS 或 XLSX 文件转换为 Markdown 格式。
首先,您需要将 Spire.XLS for .NET 包含的 DLL 文件作为引用添加到您的 .NET 项目中。DLL 文件可以从 此链接下载,也可以通过 NuGet 安装。
PM> Install-Package Spire.XLS
通过使用 Spire.XLS for .NET 提供的 Workbook.SaveToMarkdown() 方法,开发者可以轻松地将 Excel XLS 或 XLSX 文件中的数据转换为 Markdown 表格。以下是实现该功能的详细步骤:
代码示例
下面是使用 C# 和 Spire.XLS 将 Excel XLS 或 XLSX 文件转换为 Markdown 格式的完整示例:
using Spire.Xls;
namespace ConvertExcelToMarkdown
{
internal class Program
{
static void Main(string[] args)
{
// 创建 Workbook 类的对象
Workbook workbook = new Workbook();
// 加载一个示例 Excel XLSX 文件
workbook.LoadFromFile("示例.xlsx");
// 或加载一个示例 Excel XLS 文件
// workbook.LoadFromFile("示例.xls");
// 将 Excel 文件保存为 Markdown 格式
workbook.SaveToMarkdown("Excel转Markdown.md");
// 释放 Workbook 对象占用的资源
workbook.Dispose();
}
}
}

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
在当今数字化时代,通过编程方式管理和操作 Excel 文件已成为开发者的必备技能。无论您是在构建报表工具、自动化数据处理,还是通过动态数据处理增强应用程序功能,拥有一个强大的库可以带来显著不同。Spire.XLS for .NET 正是这样一款多功能且强大的库,它能让您使用 C# 无缝地创建、读取、写入和编辑 Excel 文件。
本文将从以下几个方面展示如何利用 C# 和 Spire.XLS for .NET 轻松编辑 Excel 文档。
首先,您需要添加 Spire.XLS for .NET 包中包含的 DLL 文件作为 .NET 项目中的引用。DLL 文件可以从 此链接下载或通过 NuGet 安装。
PM> Install-Package Spire.XLS
在使用C#操作Excel文件时,最常见的任务之一就是读取和写入数据。Spire.XLS for .NET 提供了 CellRange.Value 属性,使开发者能够轻松获取或设置单个单元格的值。
以下是使用 C# 读写 Excel 文件的步骤:
using Spire.Xls;
namespace ReadAndWriteExcel
{
class Program
{
static void Main(string[] args)
{
// 创建一个 Workbook 对象
Workbook workbook = new Workbook();
// 加载一个 Excel 文件
workbook.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.xlsx");
// 获取一个特定的工作表
Worksheet worksheet = workbook.Worksheets[0];
// 获取一个特定的单元格
CellRange cell = worksheet.Range["A1"];
// 读取单元格的值
String text = cell.Value;
// 判断单元格的值是否为 "区域"
if (text == "区域")
{
// 更新单元格的值
cell.Value = "地区";
}
// 将工作簿保存到不同的文件
workbook.SaveToFile("读写Excel.xlsx", ExcelVersion.Version2016);
// 释放资源
workbook.Dispose();
}
}
}

样式和格式设置是制作专业 Excel 报表的重要环节。Spire.XLS for .NET 在 CellRange 类中提供了丰富的 API,可用于管理单元格样式、字体、颜色、对齐方式,以及调整行高和列宽。
以下是设置 Excel 单元格样式与格式的步骤:
using Spire.Xls;
using System.Drawing;
namespace FormatCells
{
class Program
{
static void Main(string[] args)
{
// 创建一个 Workbook 对象
Workbook workbook = new Workbook();
// 加载一个 Excel 文件
workbook.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.xlsx");
// 获取一个特定的工作表
Worksheet worksheet = workbook.Worksheets[0];
// 获取工作表中的所有已分配范围
CellRange allocatedRange = worksheet.AllocatedRange;
// 遍历行
for (int rowNum = 0; rowNum < allocatedRange.RowCount; rowNum++)
{
if(rowNum == 0)
{
// 为标题行应用单元格颜色
allocatedRange.Rows[rowNum].Style.Color = Color.Black;
// 更改标题行的字体颜色
allocatedRange.Rows[rowNum].Style.Font.Color = Color.White;
}
// 为其他行应用交替颜色
else if (rowNum % 2 == 1)
{
allocatedRange.Rows[rowNum].Style.Color = Color.LightGray;
}
else if (rowNum % 2 == 0)
{
allocatedRange.Rows[rowNum].Style.Color = Color.White;
}
// 将文本居中对齐
allocatedRange.Rows[rowNum].HorizontalAlignment = HorizontalAlignType.Center;
allocatedRange.Rows[rowNum].VerticalAlignment = VerticalAlignType.Center;
// 设置行高
allocatedRange.Rows[rowNum].RowHeight = 18;
}
// 遍历列
for (int columnNum = 0; columnNum < allocatedRange.ColumnCount; columnNum++)
{
// 设置列宽
if (columnNum > 0)
{
allocatedRange.Columns[columnNum].ColumnWidth = 12;
}
}
// 将工作簿保存到不同的文件
workbook.SaveToFile("应用格式.xlsx", ExcelVersion.Version2016);
// 释放资源
workbook.Dispose();
}
}
}

Excel 的查找替换功能既能提升数据准确性和一致性,又能显著提高工作效率。借助 Spire.XLS for .NET,您可以通过 Worksheet.FindString() 方法快速定位包含特定字符串的单元格,再使用 CellRange.Value 属性更新单元格内容。
使用 C# 实现 Excel 文本查找替换的步骤如下:
using Spire.Xls;
namespace FindAndReplaceText
{
class Program
{
static void Main(string[] args)
{
// 创建一个 Workbook 对象
Workbook workbook = new Workbook();
// 加载一个 Excel 文件
workbook.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.xlsx");
// 获取一个特定的工作表
Worksheet worksheet = workbook.Worksheets[0];
// 定义一个字符串数组用于替换
String[] new_strings = new String[] { "西部厂区", "东北厂区", "北部厂区", "南部厂区", "中部厂区" };
// 定义一个字符串数组,在 Excel 表中将被替换
String[] old_strings = new String[] { "西部", "东部", "北部", "南部", "中部" };
// 遍历旧字符串
for (int i = 0; i < old_strings.Length; i++)
{
// 查找包含当前旧字符串的单元格
CellRange cell = worksheet.FindString(old_strings[i], false, false);
// 用新字符串替换找到的单元格中的文本
cell.Text = new_strings[i];
}
// 将工作簿保存到不同的文件
workbook.SaveToFile("替换文本.xlsx", ExcelVersion.Version2016);
// 释放资源
workbook.Dispose();
}
}
}

除了基本的文件操作外,Spire.XLS for .NET 还提供了多种高级功能来处理 Excel 文件。这些技术可用于自动化复杂任务、执行计算以及生成动态报表。
以下是使用 C# 在 Excel 中添加公式和创建图表的步骤:
using Spire.Xls;
namespace AddFormulaAndChart
{
class Program
{
static void Main(string[] args)
{
// 创建一个 Workbook 对象
Workbook workbook = new Workbook();
// 加载一个 Excel 文件
workbook.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Input.xlsx");
// 获取一个特定的工作表
Worksheet worksheet = workbook.Worksheets[0];
// 获取所有已分配范围
CellRange allocatedRange = worksheet.AllocatedRange;
// 遍历行
for (int rowNum = 0; rowNum < allocatedRange.RowCount; rowNum++)
{
if (rowNum == 0)
{
// 在单元格 F1 中写入文本
worksheet.Range[rowNum + 1, 6].Text = "年度";
// 为单元格应用样式
worksheet.Range[rowNum + 1, 6].Style.Font.IsBold = true;
worksheet.Range[rowNum + 1, 6].Style.Font.FontName = "宋体";
worksheet.Range[rowNum + 1, 6].Style.Font.Size = 12;
worksheet.Range[rowNum + 1, 6].Style.HorizontalAlignment = HorizontalAlignType.Center;
}
else
{
// 为单元格 F2 到 F6 添加公式
worksheet.Range[rowNum + 1, 6].Formula = $"=SUM(B{rowNum + 1}:E{rowNum + 1})";
// 为单元格应用样式
worksheet.Range[rowNum + 1, 6].Style.Font.FontName = "Times New Roman";
worksheet.Range[rowNum + 1, 6].Style.Font.Size = 12;
worksheet.Range[rowNum + 1, 6].Style.HorizontalAlignment = HorizontalAlignType.Center;
}
}
// 添加一个聚类柱状图
Chart chart = worksheet.Charts.Add(ExcelChartType.ColumnClustered);
// 设置图表的数据范围
chart.DataRange = worksheet.Range["A1:E6"];
chart.SeriesDataFromRange = false;
// 设置图表的位置
chart.LeftColumn = 1;
chart.TopRow = 7;
chart.RightColumn = 7;
chart.BottomRow = 18;
// 设置和格式化图表标题
chart.ChartTitle = "区域季度生产量";
chart.ChartTitleArea.Size = 13;
chart.ChartTitleArea.IsBold = true;
// 将工作簿保存到不同的文件
workbook.SaveToFile("添加公式和图表.xlsx", ExcelVersion.Version2016);
// 释放资源
workbook.Dispose();
}
}
}

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
在 Word 文档中添加边框是一种突显重点信息的有效方式,尤其适用于包含大量文本的内容场景。相比普通格式,给字符或段落添加边框不仅能强化视觉层次,还能提升文档的专业感与可读性。本文将介绍如何使用 Spire.Doc for Java,在 Java 中为 Word 文档中的文本和段落设置边框,帮助你更高效地美化文档布局。
首先,您需要在 Java 程序中添加 Spire.Doc.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.doc</artifactId>
<version>14.9.5</version>
</dependency>
</dependencies>
给报告中的专有名词或专业术语、合同中的产品名等重要信息添加边框,可以有效突出重点内容,让关键信息更加醒目。在本章节中,我们一起来看看如何使用 Java 为指定的文本设置边框,提升文档的可读性和视觉效果。
在 Word 文档中给文本添加边框的具体步骤如下:
下方代码示例展示了如何在 Word 文档中给 “AI绘画” 这个文本添加边框:
import com.spire.doc.*;
import com.spire.doc.documents.BorderStyle;
import com.spire.doc.documents.TextSelection;
import java.awt.*;
public class AddBorderToText {
public static void main(String[] args) {
// 加载Word文档
Document doc = new Document();
doc.loadFromFile("/AI绘画的利与弊.docx");
// 查找文本
TextSelection[] textSelections1 = document.findAllString("AI绘画", false, false);
// 给文本字符串添加边框并设置边框的样式
for (TextSelection selection : textSelections1)
{
selection.getAsOneRange().getCharacterFormat().getBorder().setBorderType(BorderStyle.Single);
selection.getAsOneRange().getCharacterFormat().getBorder().setColor(Color.green);
selection.getAsOneRange().getCharacterFormat().getBorder().setLineWidth(2);
}
// 保存结果文档
document.saveToFile("/给文本添加边框.docx", FileFormat.Docx_2013);
}
}

虽然你仍然可以通过查找关键文本来为段落添加边框,但当整段内容都是重点,如特别说明、法律条款等,Spire.Doc 提供了更简洁的方式:你可以直接通过索引定位段落并为其添加边框。接下来我们来看具体如何操作。
给 Word 文档中的段落添加边框的详细步骤:
下方代码展示了怎样给 Word 文档的第二个段落添加边框:
import com.spire.doc.*;
import com.spire.doc.documents.BorderStyle;
import com.spire.doc.documents.Paragraph;
import java.awt.*;
public class AddBordertoPara {
public static void main(String[] args) {
// 加载文档
Document doc = new Document();
doc.loadFromFile("/AI绘画的利与弊.docx");
// 获取第二个段落
Paragraph para = doc.getSections().get(0).getParagraphs().get(1);
// 设置段落边框类型,边框颜色、线条宽度
para.getFormat().getBorders().setBorderType(BorderStyle.Dot);
para.getFormat().getBorders().setColor(new Color(18,100,223));
para.getFormat().getBorders().setLineWidth(2);
// 保存文档
doc.saveToFile("/给段落添加边框.docx",FileFormat.Docx_2013);
doc.dispose();
}
}

如果您需要去除生成文档中的评估提示或解除功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
Spire.Office for Java 10.4.0 已发布。在该版本中,Spire.Doc for Java 增强了 Word 到 HTML 和 PDF 的转换功能;Spire.XLS for Java 支持使用表格数据添加 Slicer 切片器;Spire.Presentation for Java 增强了 PPT 到图片的转换;Spire.PDF for Java 支持使用“digitalsignatures.PdfCertificate”签名时传入 byte[] 证书数据。 此外,大量已知问题也在该版本中成功修复。详情请阅读以下内容。
获取 Spire.Office for Java 10.4.0,请点击:https://www.e-iceblue.cn/Downloads/Spire-Office-JAVA.html
问题修复:
新功能:
Workbook wb = new Workbook();
//Get the first worksheet of workbook
Worksheet worksheet = wb.getWorksheets().get(0);
worksheet.getRange().get("A1").setValue("fruit");
worksheet.getRange().get("A2").setValue("grape");
worksheet.getRange().get("A3").setValue("blueberry");
worksheet.getRange().get("A4").setValue("kiwi");
worksheet.getRange().get("A5").setValue("cherry");
worksheet.getRange().get("A6").setValue("grape");
worksheet.getRange().get("A7").setValue("blueberry");
worksheet.getRange().get("A8").setValue("kiwi");
worksheet.getRange().get("A9").setValue("cherry");
worksheet.getRange().get("B1").setValue("year");
worksheet.getRange().get("B2").setValue2(2020);
worksheet.getRange().get("B3").setValue2(2020);
worksheet.getRange().get("B4").setValue2(2020);
worksheet.getRange().get("B5").setValue2(2020);
worksheet.getRange().get("B6").setValue2(2021);
worksheet.getRange().get("B7").setValue2(2021);
worksheet.getRange().get("B8").setValue2(2021);
worksheet.getRange().get("B9").setValue2(2021);
worksheet.getRange().get("C1").setValue("amount");
worksheet.getRange().get("C2").setValue2(50);
worksheet.getRange().get("C3").setValue2(60);
worksheet.getRange().get("C4").setValue2(70);
worksheet.getRange().get("C5").setValue2(80);
worksheet.getRange().get("C6").setValue2(90);
worksheet.getRange().get("C7").setValue2(100);
worksheet.getRange().get("C8").setValue2(110);
worksheet.getRange().get("C9").setValue2(120);
//Get slicer collection
XlsSlicerCollection slicers = worksheet.getSlicers();
//Create a super table with the data from the specific cell range.
IListObject table = worksheet.getListObjects().create("Super Table", worksheet.getRange().get("A1:C9"));
int count = 3;
int index = 0;
for (Object styletype : SlicerStyleType.values())
{
SlicerStyleType type = (SlicerStyleType)styletype;
count += 5;
//Add a Slicer through pivot table data : here invoke Add(IListObject, string, int) api.
String range = "E" + count;
index = slicers.add(table, range.toString(), 0);
//Style setting
XlsSlicer xlsSlicer = slicers.get(index);
xlsSlicer.setName("slicers_" + count);
xlsSlicer.setStyleType(type);
}
//Save to file
wb.saveToFile(outputFile_xlsx, ExcelVersion.Version2013);
Workbook wb = new Workbook();
//Get the first worksheet of workbook
Worksheet worksheet = wb.getWorksheets().get(0);
worksheet.getRange().get("A1").setValue("fruit");
worksheet.getRange().get("A2").setValue("grape");
worksheet.getRange().get("A3").setValue("blueberry");
worksheet.getRange().get("A4").setValue("kiwi");
worksheet.getRange().get("A5").setValue("cherry");
worksheet.getRange().get("A6").setValue("grape");
worksheet.getRange().get("A7").setValue("blueberry");
worksheet.getRange().get("A8").setValue("kiwi");
worksheet.getRange().get("A9").setValue("cherry");
worksheet.getRange().get("B1").setValue("year");
worksheet.getRange().get("B2").setValue2(2020);
worksheet.getRange().get("B3").setValue2(2020);
worksheet.getRange().get("B4").setValue2(2020);
worksheet.getRange().get("B5").setValue2(2020);
worksheet.getRange().get("B6").setValue2(2021);
worksheet.getRange().get("B7").setValue2(2021);
worksheet.getRange().get("B8").setValue2(2021);
worksheet.getRange().get("B9").setValue2(2021);
worksheet.getRange().get("C1").setValue("amount");
worksheet.getRange().get("C2").setValue2(50);
worksheet.getRange().get("C3").setValue2(60);
worksheet.getRange().get("C4").setValue2(70);
worksheet.getRange().get("C5").setValue2(80);
worksheet.getRange().get("C6").setValue2(90);
worksheet.getRange().get("C7").setValue2(100);
worksheet.getRange().get("C8").setValue2(110);
worksheet.getRange().get("C9").setValue2(120);
// Get pivot table collection
PivotTablesCollection pivotTables = worksheet.getPivotTables();
//Add a PivotTable to the worksheet
CellRange dataRange = worksheet.getRange().get("A1:C9");
PivotCache cache = wb.getPivotCaches().add(dataRange);
//Cell to put the pivot table
PivotTable pt = worksheet.getPivotTables().add("TestPivotTable", worksheet.getRange().get("A12"), cache);
//Drag the fields to the row area.
IPivotField pf = pt.getPivotFields().get("fruit");
pf.setAxis(AxisTypes.Row);
IPivotField pf2 = pt.getPivotFields().get("year");
pf2.setAxis(AxisTypes.Column);
//Drag the field to the data area.
pt.getDataFields().add(pt.getPivotFields().get("amount"), "SUM of Count", SubtotalTypes.Sum);
//Set PivotTable style
pt.setBuiltInStyle(PivotBuiltInStyles.PivotStyleMedium10);
//Get slicer collection
XlsSlicerCollection slicers = worksheet.getSlicers();
//Add a Slicer through pivot table data: here invoke Add(IPivotTable, string, int) api.
int index = slicers.add(pt, "E12", 0);
XlsSlicer xlsSlicer = slicers.get(index);
xlsSlicer.setName("test_xlsSlicer");
xlsSlicer.setWidth(100);
xlsSlicer.setHeight(120);
xlsSlicer.setStyleType(SlicerStyleType.SlicerStyleLight2);
xlsSlicer.isPositionLocked(true);
//Get SlicerCache object of current slicer
XlsSlicerCache slicerCache = xlsSlicer.getSlicerCache();
slicerCache.setCrossFilterType(SlicerCacheCrossFilterType.ShowItemsWithNoData);
//Style setting
XlsSlicerCacheItemCollection slicerCacheItems = xlsSlicer.getSlicerCache().getSlicerCacheItems();
XlsSlicerCacheItem xlsSlicerCacheItem = slicerCacheItems.get(0);
xlsSlicerCacheItem.isSelected(false);
XlsSlicerCollection slicers_2 = worksheet.getSlicers();
IPivotField r1 = pt.getPivotFields().get("year");
int index_2 = slicers_2.add(pt, "I12", r1);
XlsSlicer xlsSlicer_2 = slicers.get(index_2);
xlsSlicer_2.setRowHeight(40);
xlsSlicer_2.setStyleType(SlicerStyleType.SlicerStyleLight3);
xlsSlicer_2.isPositionLocked(false);
//Get SlicerCache object of current slicer
XlsSlicerCache slicerCache_2 = xlsSlicer_2.getSlicerCache();
slicerCache_2.setCrossFilterType(SlicerCacheCrossFilterType.ShowItemsWithDataAtTop);
//Style setting
XlsSlicerCacheItemCollection slicerCacheItems_2 = xlsSlicer_2.getSlicerCache().getSlicerCacheItems();
XlsSlicerCacheItem xlsSlicerCacheItem_2 = slicerCacheItems_2.get(1);
xlsSlicerCacheItem_2.isSelected(false);
pt.calculateData();
//Save to file
wb.saveToFile("out.xlsx", ExcelVersion.Version2013);
Workbook wb = new Workbook();
wb.loadFromFile(inputFile);
//Get slicer collection of first worksheet
Worksheet worksheet_1 = wb.getWorksheets().get(0);
XlsSlicerCollection slicers = worksheet_1.getSlicers();
// Remove the first slicer by index
slicers.removeAt(0);
XlsSlicer slicer = worksheet_1.getSlicers().get(1);
// Remove second slicer by object
worksheet_1.getSlicers().remove(slicer);
Worksheet worksheet_2 = wb.getWorksheets().get(2);
// Remove all slicers
worksheet_2.getSlicers().clear();
//Save to file
wb.saveToFile(outputFile_xlsx, ExcelVersion.Version2013);
Workbook wb = new Workbook();
wb.loadFromFile(inputFile);
//Get the first worksheet of workbook
Worksheet worksheet = wb.getWorksheets().get(0);
// Get slicer collection
XlsSlicerCollection slicers = worksheet.getSlicers();
//Style setting
XlsSlicer xlsSlicer = slicers.get(0);
xlsSlicer.setStyleType(SlicerStyleType.SlicerStyleDark4);
xlsSlicer.setCaption("Slicer");
xlsSlicer.isPositionLocked(true);
XlsSlicerCacheItemCollection slicerCacheItems = xlsSlicer.getSlicerCache().getSlicerCacheItems();
XlsSlicerCacheItem xlsSlicerCacheItem = slicerCacheItems.get(0);
xlsSlicerCacheItem.isSelected(false);
//Get SlicerCache object of current slicer
XlsSlicerCache slicerCache = xlsSlicer.getSlicerCache();
slicerCache.setCrossFilterType(SlicerCacheCrossFilterType.ShowItemsWithNoData);
//Save to file
wb.saveToFile(outputFile_xlsx, ExcelVersion.Version2013);
Workbook wb = new Workbook();
wb.loadFromFile(inputFile);
// Get slicer collection of first worksheet
Worksheet worksheet = wb.getWorksheets().get(0);
XlsSlicerCollection slicers = worksheet.getSlicers();
StringBuilder builder = new StringBuilder();
builder.append("slicers.Count:" + slicers.getCount()+"\r\n");
XlsSlicer xlsSlicer = slicers.get(1);
builder.append("xlsSlicer.Name:" + xlsSlicer.getName()+"\r\n");
builder.append("xlsSlicer.Caption:" + xlsSlicer.getCaption()+"\r\n");
builder.append("xlsSlicer.NumberOfColumns:" + xlsSlicer.getNumberOfColumns()+"\r\n");
builder.append("xlsSlicer.ColumnWidth:" + xlsSlicer.getColumnWidth()+"\r\n");
builder.append("xlsSlicer.RowHeight:" + xlsSlicer.getRowHeight()+"\r\n");
builder.append("xlsSlicer.ShowCaption:" + xlsSlicer.isShowCaption()+"\r\n");
builder.append("xlsSlicer.PositionLocked:" + xlsSlicer.isPositionLocked()+"\r\n");
builder.append("xlsSlicer.Width:" + xlsSlicer.getWidth()+"\r\n");
builder.append("xlsSlicer.Height:" + xlsSlicer.getHeight()+"\r\n");
//Get SlicerCache object of current slicer
XlsSlicerCache slicerCache = xlsSlicer.getSlicerCache();
builder.append("slicerCache.SourceName:" + slicerCache.getSourceName()+"\r\n");
builder.append("slicerCache.IsTabular:" + slicerCache.isTabular()+"\r\n");
builder.append("slicerCache.Name:" + slicerCache.getName()+"\r\n");
XlsSlicerCacheItemCollection slicerCacheItems = slicerCache.getSlicerCacheItems();
XlsSlicerCacheItem xlsSlicerCacheItem = slicerCacheItems.get(1);
builder.append("xlsSlicerCacheItem.Selected:" + xlsSlicerCacheItem.isSelected() +"\r\n");
FileWriter fw = new FileWriter(outputFile_T);
fw.write(builder.toString());
fw.flush();
fw.close();
wb.dispose();
问题修复:
问题修复:
新功能:
PdfDocument pdf = new PdfDocument();
pdf.loadFromFile(inputFile);
FileInputStream instream = new FileInputStream(inputFile_pfx);
byte[] data = FileUtil.getStreamBytes(instream);
PdfCertificate x509 = new PdfCertificate(data, "e-iceblue");
PdfOrdinarySignatureMaker signatureMaker = new PdfOrdinarySignatureMaker(pdf, x509);
signatureMaker.makeSignature("signName");
pdf.saveToFile(outputFile, FileFormat.PDF);
pdf.dispose();
问题修复:
Spire.PDF for Java 11.4.2 已发布。本次更新新增支持使用“digitalsignatures.PdfCertificate”签名时传入 byte[] 证书数据,同时增强了 PDF 到 PDF/A 和 PPT 的转换功能。此外,一些已知问题也在该版本中成功修复,如提取表格数据不正确的问题。详情请阅读以下内容。
新功能:
PdfDocument pdf = new PdfDocument();
pdf.loadFromFile(inputFile);
FileInputStream instream = new FileInputStream(inputFile_pfx);
byte[] data = FileUtil.getStreamBytes(instream);
PdfCertificate x509 = new PdfCertificate(data, "e-iceblue");
PdfOrdinarySignatureMaker signatureMaker = new PdfOrdinarySignatureMaker(pdf, x509);
signatureMaker.makeSignature("signName");
pdf.saveToFile(outputFile, FileFormat.PDF);
pdf.dispose();
问题修复: