TXT 是简单通用的文本文件,但不支持格式选项和高级功能,如页眉、页脚、页码和样式,也不能包含图像或表格等多媒体内容。此外,纯文本编辑器也不提供拼写检查和语法检查功能。
如果需要在文本文档中添加格式、多媒体内容或高级功能,则需要将其转换为 Word 等更高级的格式。同样,如果需要简化 Word 文档的格式、减小文件大小或使用基本工具处理文档内容,则可能需要将其转换为纯文本格式。本文将介绍如何使用 Spire.Doc for .NET 库在 C# 中将文本文件转换为 Word 格式以及将 Word 文件转换为文本格式。
首先,您需要将 Spire.Doc for.NET 包含的 DLL 文件作为引用添加到您的 .NET 项目中。DLL 文件可以从此链接下载,也可以通过 NuGet 安装。
PM> Install-Package Spire.Doc
Spire.Doc for .NET提供了 Document.LoadText(string fileName) 方法,可让您加载文本文件。加载文本文件后,您可以使用 Document.SaveToFile(string fileName, FileFormat fileFormat) 方法轻松地将其保存为 Word 格式。具体步骤如下:
using Spire.Doc;
namespace ConvertTextToWord
{
internal class Program
{
static void Main(string[] args)
{
// 创建Document类的对象
Document doc = new Document();
// 加载文本文件
doc.LoadText("示例.txt");
// 将文本文件保存为Word
doc.SaveToFile("Txt转Word.docx", FileFormat.Docx2016);
doc.Close();
}
}
}

要将 Word 文件转换为文本格式,只需使用 Document.LoadFromFile(string fileName) 方法加载 Word 文件,然后调用 Document.SaveToFile(string fileName, FileFormat fileFormat) 方法将其保存为文本格式。具体步骤如下:
using Spire.Doc;
namespace ConvertWordToText
{
internal class Program
{
static void Main(string[] args)
{
// 创建Document类的对象
Document doc = new Document();
// 加载Word文件
doc.LoadFromFile("云计算.docx");
// 将Word文件保存为txt格式
doc.SaveToFile("Word转Txt.txt", FileFormat.Txt);
doc.Close();
}
}
}

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
将 PDF 文档转换为 JPEG 或 PNG 等图像格式有多种用途,例如,您可以更方便地在社交媒体上分享内容、嵌入到网站中,或者在演示文稿中使用。将 PDF 转换为图像还可以避免因打印机不完全支持 PDF 格式而导致的问题。本文将介绍如何在 Java 中使用 Spire.PDF for Java 将 PDF 转换为 JPEG 或 PNG 格式。
首先,您需要在 Java 程序中添加 Spire.Pdf.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.pdf</artifactId>
<version>12.9.0</version>
</dependency>
</dependencies>
在 Java 中将 PDF 转换为 JPEG 图像可以通过 Spire.PDF for Java 提供的 PdfDocument.saveAsImage() 方法来实现。此方法将 PDF 文档中的特定页面转换为 BufferedImage 对象,然后您可以将其保存为 .jpg 格式的文件。下面是将 PDF 文档的每一页转换为 JPEG 图像文件的具体步骤。
import com.spire.pdf.PdfDocument;
import com.spire.pdf.graphics.PdfImageType;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class ConvertPdfToJpeg {
public static void main(String[] args) throws IOException {
// 创建一个 PdfDocument 的实例
PdfDocument pdf = new PdfDocument();
// 加载示例 PDF 文档
pdf.loadFromFile("/示例文件.pdf");
// 遍历 PDF 中的所有页面
for (int i = 0; i < pdf.getPages().getCount(); i++) {
// 将当前页面保存为 BufferedImage 对象
BufferedImage image = pdf.saveAsImage(i, PdfImageType.Bitmap, 300, 300);
// 使用 RGB 类型重新创建一个 BufferedImage 对象
BufferedImage newImg = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_INT_RGB);
newImg.getGraphics().drawImage(image, 0, 0, null);
// 将图片信息写为 .jpg 文件
File file = new File("/PDF转JPEG/" + String.format(("JPEG-%d.jpg"), i));
ImageIO.write(newImg, "JPEG", file);
}
pdf.close();
}
}

将 PDF 文档的页面转换为 PNG 格式的图片的步骤基本与将其保存为 JPEG 文件相同,也会用到 PdfDocument.saveAsImage() 和 ImageIO.write() 方法。使用它们将 PDF 转换为 PNG 的详细步骤如下。
import com.spire.pdf.*;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class ConvertPdfToPng {
public static void main(String[] args) throws IOException {
// 创建一个 PdfDocument 的实例
PdfDocument doc = new PdfDocument();
// 加载一个示例 PDF 文档
doc.loadFromFile("/示例文件.pdf");
// 使生成的 PNG 文件背景透明
//doc.getConvertOptions().setPdfToImageOptions(0);
// 遍历 PDF 中的所有页面
for (int i = 0; i < doc.getPages().getCount(); i++) {
// 将当前页面保存为 BufferedImage 对象
BufferedImage image = doc.saveAsImage(i);
// 将图片信息写为 .png 文件
File file = new File("/PDF转PNG/" + String.format("PNG-%d.png", i));
ImageIO.write(image, "png", file);
}
doc.close();
}
}

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
图片文件是人们日常生活中最常用的文档类型之一。有时,您可能需要将文件夹中的所有图片转换为 PowerPoint 演示文稿。根据不同的需求,您可以将图片转换为形状或幻灯片背景。本文将演示如何使用 Spire.Presentation for Java 在 Java 中将常见格式的图片转换为 PowerPoint 文档。
首先,您需要在 Java 程序中添加 Spire.Presentation.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.presentation</artifactId>
<version>11.9.10</version>
</dependency>
</dependencies>
当图片被转换为 PowerPoint 文档的背景图时,它们无法移动或缩放。合适的背景图可以让您的演示文稿更加美观,吸引观众的眼球。下面我们来看看怎样通过 Spire.Presentation for Java 将一组图片转换为 PowerPoint 文件背景图片。
import com.spire.presentation.*;
import com.spire.presentation.drawing.*;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
public class ConvertImagesAsBackground {
public static void main(String[] args) throws Exception {
// 创建一个 Presentation 对象
Presentation presentation = new Presentation();
// 设置幻灯片大小类型
presentation.getSlideSize().setType(SlideSizeType.SCREEN_16_X_9);
// 移除默认幻灯片
presentation.getSlides().removeAt(0);
// 从文件夹中获取图片文件
File directoryPath = new File("/图片");
File[] picFiles = directoryPath.listFiles();
// 遍历图片文件
for (int i = 0; i < picFiles.length; i++)
{
// 添加一张幻灯片
ISlide slide = presentation.getSlides().append();
// 获取一张图片
String imageFile = picFiles[i].getAbsolutePath();
// 将该图片添加到图片集合中
BufferedImage bufferedImage = ImageIO.read(new FileInputStream(imageFile));
IImageData imageData = presentation.getImages().append(bufferedImage);
// 将该图片设置为幻灯片的背景图片
slide.getSlideBackground().setType(BackgroundType.CUSTOM);
slide.getSlideBackground().getFill().setFillType(FillFormatType.PICTURE);
slide.getSlideBackground().getFill().getPictureFill().setFillType(PictureFillType.STRETCH);
slide.getSlideBackground().getFill().getPictureFill().getPicture().setEmbedImage(imageData);
}
// 保存结果文件
presentation.saveToFile("/转换图片为背景.pptx", FileFormat.PPTX_2013);
}
}

如果您希望在 PowerPoint 文件中移动和调整图片大小,可以将其转换为形状。以下是使用 Spire.Presentation for Java 将图片转换为形状的具体步骤。
import com.spire.presentation.*;
import com.spire.presentation.drawing.*;
import javax.imageio.ImageIO;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
public class ConvertImageToShape {
public static void main(String[] args) throws Exception {
// 创建一个 Presentation 类的对象
Presentation presentation = new Presentation();
// 设置幻灯片大小类型
presentation.getSlideSize().setType(SlideSizeType.SCREEN_16_X_9);
// 移除默认幻灯片
presentation.getSlides().removeAt(0);
// 从文件夹中获取图片文件
File directoryPath = new File("/图片");
File[] picFiles = directoryPath.listFiles();
// 遍历图片
for (int i = 0; i < picFiles.length; i++)
{
// 添加一张幻灯片
ISlide slide = presentation.getSlides().append();
// 获取一张图片
String imageFile = picFiles[i].getAbsolutePath();
// 将图片添加到图片集合中
BufferedImage bufferedImage = ImageIO.read(new FileInputStream(imageFile));
IImageData imageData = presentation.getImages().append(bufferedImage);
// 添加一个与幻灯片同样大小的形状
IAutoShape shape = slide.getShapes().appendShape(ShapeType.RECTANGLE, new Rectangle2D.Float(0, 0, (float) presentation.getSlideSize().getSize().getWidth(), (float)presentation.getSlideSize().getSize().getHeight()));
// 用图片填充形状
shape.getLine().setFillType(FillFormatType.NONE);
shape.getFill().setFillType(FillFormatType.PICTURE);
shape.getFill().getPictureFill().setFillType(PictureFillType.STRETCH);
shape.getFill().getPictureFill().getPicture().setEmbedImage(imageData);
}
// 保存结果文件
presentation.saveToFile("/图片转换为形状.pptx", FileFormat.PPTX_2013);
}
}

如果图片长宽比不是 16:9,或者它们不是标准幻灯片大小,您可以根据图片的实际尺寸创建幻灯片,这样可以有效防止图片被拉伸或压缩。以下是使用 Spire.Presentation for Java 将图片转换为 PowerPoint 文档并且自定义幻灯片大小的步骤。
import com.spire.pdf.graphics.PdfGraphicsUnit;
import com.spire.pdf.graphics.PdfUnitConvertor;
import com.spire.presentation.*;
import com.spire.presentation.drawing.*;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
public class CustomizeSlideSize {
public static void main(String[] args) throws Exception {
// 创建一个 Presentation 对象
Presentation presentation = new Presentation();
// 移除默认幻灯片
presentation.getSlides().removeAt(0);
// 从文件夹中获取图片文件
File directoryPath = new File("/图片文件夹");
File[] picFiles = directoryPath.listFiles();
// 创建一个 PdfUnitConvertor 对象
PdfUnitConvertor convertor = new PdfUnitConvertor();
// 遍历图片
for (int i = 0; i < picFiles.length; i++)
{
// 获取一张图片
String imageFile = picFiles[i].getAbsolutePath();
// 将该图片添加到图片集合中
BufferedImage bufferedImage = ImageIO.read(new FileInputStream(imageFile));
IImageData imageData = presentation.getImages().append(bufferedImage);
// 获取图片的高和宽的像素
int height = imageData.getHeight();
int width = imageData.getWidth();
// 将像素转换为点
float widthPoint = convertor.convertUnits(width, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point);
float heightPoint= convertor.convertUnits(height, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point);
// 设置幻灯片的大小
presentation.getSlideSize().setSize(new Dimension((int)widthPoint, (int)heightPoint));
// 添加一张幻灯片
ISlide slide = presentation.getSlides().append();
// 设置图片为幻灯片背景
slide.getSlideBackground().setType(BackgroundType.CUSTOM);
slide.getSlideBackground().getFill().setFillType(FillFormatType.PICTURE);
slide.getSlideBackground().getFill().getPictureFill().setFillType(PictureFillType.STRETCH);
slide.getSlideBackground().getFill().getPictureFill().getPicture().setEmbedImage(imageData);
}
// 保存结果文档
presentation.saveToFile("/自定义幻灯片大小.pptx", FileFormat.PPTX_2013);
}
}

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
随着企业越来越依赖基于 Web 的平台来处理和共享 Excel 表格数据,程序化地保护或取消保护 Exce 文件变得至关重要。这些安全措施不仅能防止敏感信息被未授权访问,还能通过对特定数据集设置访问权限,实现团队成员之间的高效协作。利用 JavaScript 和 React 框架,开发者可以直接在网页应用内实现这些功能,从而为数据机密性和完整性管理提供强有力的保障。本文将介绍如何使用 Spire.XLS for JavaScript 在 React 应用中保护和取消保护 Excel 工作簿。
要在 React 应用中实现 Excel 文件的保护与取消保护,首先需要下载 Spire.XLS for JavaScript,或者通过 npm 进行安装:
npm i spire.office
下载的产品包整合了Spire.Doc for JavaScript,Spire.XLS for JavaScript,Spire.PDF for JavaScript,Spire.Presentation for JavaScript,使用Spire.XLS for JavaScript的功能需将相应( spire.xls.js,Spire.Xls.Wasm.zip,spire.common.js,Spire.Common.Wasm.zip,_framework 文件复制到项目的 public 文件夹中。同时为了确保文本渲染,相关使用字体文件可自定义路径添加。以下示例中,字体添加路径为:public\static\font。
详细的安装和配置步骤,请参考此教程:如何在 React 项目中集成 Spire.XLS for JavaScript
Spire.XLS for JavaScript 提供了 Workbook.Protect(filename: string) 方法,可为 Excel 文件设置密码加密,从而保护整个工作簿。实现步骤如下:
import React, { useState, useEffect } from 'react';
function App() {
const [wasmModule, setWasmModule] = useState(null);
// 加载 Spire.XLS
useEffect(() => {
(async () => {
try {
const publicUrl = process.env.PUBLIC_URL || '';
const spireModule = await import(/* webpackIgnore: true */ `${publicUrl}/spire.xls.js`);
const rawModule = spireModule.default || spireModule;
window.wasmModule = typeof rawModule === 'function'
? await rawModule({ locateFile: p => p.endsWith('.wasm') ? `${publicUrl}/${p}` : p })
: rawModule;
setWasmModule(window.wasmModule);
} catch (error) {
console.error('Failed to load spire.xls.js WASM module:', error);
}
})();
}, []);
// 使用密码保护 Excel 工作簿的函数
const EncryptExcel = async () => {
const wasmModule = window.wasmModule.spirexls;
if (wasmModule) {
// 将字体加载到虚拟文件系统(VFS)中
await window.spire.FetchFileToVFS('Arial.ttf', '/Library/Fonts/', `${process.env.PUBLIC_URL}/static/font/`);
// 将 Excel 文件加载到虚拟文件系统 (VFS)
const inputFileName = 'sample.xlsx';
await window.spire.FetchFileToVFS(inputFileName, '', `${process.env.PUBLIC_URL}/static/data/`);
// 创建一个新的工作簿
const workbook = new wasmModule.Workbook();
// 从虚拟文件系统加载 Excel 文件
workbook.LoadFromFile(inputFileName);
// 使用密码加密工作簿
workbook.Protect('password');
// 定义输出文件名
const outputFileName = "加密Excel文件.xlsx";
workbook.SaveToFile({ fileName: outputFileName, version: wasmModule.ExcelVersion.Version2010 });
// 读取保存的文件并转换为Blob对象
const modifiedFileArray = window.dotnetRuntime.Module.FS.readFile(outputFileName);
const modifiedFile = new Blob([modifiedFileArray], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
// 为Blob创建一个URL并启动下载
const url = URL.createObjectURL(modifiedFile);
const a = document.createElement('a');
a.href = url;
a.download = outputFileName;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
URL.revokeObjectURL(url);
// 清理工作簿使用的资源
workbook.Dispose();
}
};
return (
<div style={{ textAlign: 'center', height: '300px' }}>
<h1>在 React 中使用 JavaScript 保护 Excel 工作簿</h1>
<button onClick={EncryptExcel} disabled={!wasmModule}>
加密并下载
</button>
</div>
);
}
export default App;

开发者使用 Worksheet.Protect() 方法对工作表进行保护,并设置具体权限,比如限制编辑但允许格式化或筛选,或完全禁止所有更改。权限通过 SheetProtectionType 枚举类进行指定,具体权限类型如下:
| 保护类型 | 允许的操作 |
| Content | 修改或插入内容 |
| DeletingColumns | 删除列 |
| DeletingRows | 删除行 |
| Filtering | 设置筛选 |
| FormattingCells | 格式化单元格 |
| FormattingColumns | 格式化列 |
| FormattingRows | 格式化行 |
| InsertingColumns | 插入列 |
| InsertingRows | 插入行 |
| InsertingHyperlinks | 插入超链接 |
| LockedCells | 选择受保护的单元格 |
| UnlockedCells | 选择未受保护的单元格 |
| Objects | 修改图形对象 |
| Scenarios | 修改保存的方案 |
| Sorting | 对数据进行排序 |
| UsingPivotTables | 使用数据透视表和数据透视图 |
| All | 对受保护工作表执行所有上述操作 |
| None | 不允许在受保护工作表上进行任何操作 |
具体步骤如下:
import React, { useState, useEffect } from 'react';
function App() {
const [wasmModule, setWasmModule] = useState(null);
// 加载 Spire.XLS
useEffect(() => {
(async () => {
try {
const publicUrl = process.env.PUBLIC_URL || '';
const spireModule = await import(/* webpackIgnore: true */ `${publicUrl}/spire.xls.js`);
const rawModule = spireModule.default || spireModule;
window.wasmModule = typeof rawModule === 'function'
? await rawModule({ locateFile: p => p.endsWith('.wasm') ? `${publicUrl}/${p}` : p })
: rawModule;
setWasmModule(window.wasmModule);
} catch (error) {
console.error('Failed to load spire.xls.js WASM module:', error);
}
})();
}, []);
// 使用密码保护 Excel 工作表的函数
const EncryptExcelWorksheet = async () => {
const wasmModule = window.wasmModule.spirexls;
if (wasmModule) {
// 将字体加载到虚拟文件系统(VFS)中
await window.spire.FetchFileToVFS('Arial.ttf', '/Library/Fonts/', `${process.env.PUBLIC_URL}/static/font/`);
// 将 Excel 文件加载到虚拟文件系统 (VFS)
const inputFileName = 'sample.xlsx';
await window.spire.FetchFileToVFS(inputFileName, '', `${process.env.PUBLIC_URL}/static/data/`);
// 创建一个新的工作簿
const workbook = new wasmModule.Workbook();
// 从虚拟文件系统加载 Excel 文件
workbook.LoadFromFile(inputFileName);
// 获取工作表
const sheet = workbook.Worksheets.get(0);
// 使用特定权限保护工作表
sheet.Protect({ password: '123456', options: wasmModule.SheetProtectionType.None });
// 定义输出文件名
const outputFileName = "加密Excel文件.xlsx";
workbook.SaveToFile({ fileName: outputFileName, version: wasmModule.ExcelVersion.Version2010 });
// 读取保存的文件并转换为Blob对象
const modifiedFileArray = window.dotnetRuntime.Module.FS.readFile(outputFileName);
const modifiedFile = new Blob([modifiedFileArray], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
// 为Blob创建一个URL并启动下载
const url = URL.createObjectURL(modifiedFile);
const a = document.createElement('a');
a.href = url;
a.download = outputFileName;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
URL.revokeObjectURL(url);
// 清理工作簿使用的资源
workbook.Dispose();
}
};
return (
<div style={{ textAlign: 'center', height: '300px' }}>
<h1>在 React 中使用 JavaScript 保护 Excel 工作表</h1>
<button onClick={EncryptExcelWorksheet} disabled={!wasmModule}>
加密并下载
</button>
</div>
);
}
export default App;

如果需要在保护工作表的同时保留部分单元格区域的编辑权限,可使用 Worksheet.AddAllowEditRange(name: string, range: CellRange) 方法定义可编辑区域,然后通过 Worksheet.Protect({password: string, options: wasmModule.SheetProtectionType.All}) 方法进行保护。具体步骤如下:
import React, { useState, useEffect } from 'react';
function App() {
const [wasmModule, setWasmModule] = useState(null);
// 加载 Spire.XLS
useEffect(() => {
(async () => {
try {
const publicUrl = process.env.PUBLIC_URL || '';
const spireModule = await import(/* webpackIgnore: true */ `${publicUrl}/spire.xls.js`);
const rawModule = spireModule.default || spireModule;
window.wasmModule = typeof rawModule === 'function'
? await rawModule({ locateFile: p => p.endsWith('.wasm') ? `${publicUrl}/${p}` : p })
: rawModule;
setWasmModule(window.wasmModule);
} catch (error) {
console.error('Failed to load spire.xls.js WASM module:', error);
}
})();
}, []);
// 保护 Excel 工作表并添加可编辑区域的函数
const EncryptExcelWorksheetWithEditableRange = async () => {
const wasmModule = window.wasmModule.spirexls;
if (wasmModule) {
// 将字体加载到虚拟文件系统(VFS)中
await window.spire.FetchFileToVFS('Arial.ttf', '/Library/Fonts/', `${process.env.PUBLIC_URL}/static/font/`);
// 将 Excel 文件加载到虚拟文件系统 (VFS)
const inputFileName = 'sample.xlsx';
await window.spire.FetchFileToVFS(inputFileName, '', `${process.env.PUBLIC_URL}/static/data/`);
// 创建一个新的工作簿
const workbook = new wasmModule.Workbook();
// 从虚拟文件系统加载 Excel 文件
workbook.LoadFromFile(inputFileName);
// 获取工作表
const sheet = workbook.Worksheets.get(0);
// 添加可编辑区域
const range1 = sheet.Range.get('C2:C9');
sheet.AddAllowEditRange({ title: "可编辑区域 1", range: range1 });
const range2 = sheet.Range.get('G2:G9');
sheet.AddAllowEditRange({ title: "可编辑区域 2", range: range2 });
// 保护工作表
sheet.Protect({ password: '123456', options: wasmModule.SheetProtectionType.All });
// 定义输出文件名
const outputFileName = "设置可编辑区域.xlsx";
workbook.SaveToFile({ fileName: outputFileName, version: wasmModule.ExcelVersion.Version2010 });
// 读取保存的文件并转换为Blob对象
const modifiedFileArray = window.dotnetRuntime.Module.FS.readFile(outputFileName);
const modifiedFile = new Blob([modifiedFileArray], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
// 为Blob创建一个URL并启动下载
const url = URL.createObjectURL(modifiedFile);
const a = document.createElement('a');
a.href = url;
a.download = outputFileName;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
URL.revokeObjectURL(url);
// 清理工作簿使用的资源
workbook.Dispose();
}
};
return (
<div style={{ textAlign: 'center', height: '300px' }}>
<h1>在 React 中使用 JavaScript 保护 Excel 工作表并添加可编辑区域</h1>
<button onClick={EncryptExcelWorksheetWithEditableRange} disabled={!wasmModule}>
加密并下载
</button>
</div>
);
}
export default App;

开发者可以通过调用 Worksheet.Unprotect(password: string) 方法,轻松移除工作表的密码保护,从而允许所有用户访问和编辑。具体步骤如下
import React, { useState, useEffect } from 'react';
function App() {
const [wasmModule, setWasmModule] = useState(null);
// 加载 Spire.XLS
useEffect(() => {
(async () => {
try {
const publicUrl = process.env.PUBLIC_URL || '';
const spireModule = await import(/* webpackIgnore: true */ `${publicUrl}/spire.xls.js`);
const rawModule = spireModule.default || spireModule;
window.wasmModule = typeof rawModule === 'function'
? await rawModule({ locateFile: p => p.endsWith('.wasm') ? `${publicUrl}/${p}` : p })
: rawModule;
setWasmModule(window.wasmModule);
} catch (error) {
console.error('Failed to load spire.xls.js WASM module:', error);
}
})();
}, []);
// 解除 Excel 工作表保护的函数
const UnprotectExcelWorksheet = async () => {
const wasmModule = window.wasmModule.spirexls;
if (wasmModule) {
// 将字体加载到虚拟文件系统(VFS)中
await window.spire.FetchFileToVFS('Arial.ttf', '/Library/Fonts/', `${process.env.PUBLIC_URL}/static/font/`);
// 将 Excel 文件加载到虚拟文件系统 (VFS)
const inputFileName = '加密Excel工作表.xlsx';
await window.spire.FetchFileToVFS(inputFileName, '', `${process.env.PUBLIC_URL}/static/data/`);
// 创建一个新的工作簿
const workbook = new wasmModule.Workbook();
// 从虚拟文件系统加载 Excel 文件
workbook.LoadFromFile(inputFileName);
// 获取要解除保护的工作表
const sheet = workbook.Worksheets.get(0);
// 移除密码保护
sheet.Unprotect('password');
// 定义输出文件名
const outputFileName = "取消保护Excel工作表.xlsx";
workbook.SaveToFile({ fileName: outputFileName, version: wasmModule.ExcelVersion.Version2010 });
// 读取保存的文件并转换为Blob对象
const modifiedFileArray = window.dotnetRuntime.Module.FS.readFile(outputFileName);
const modifiedFile = new Blob([modifiedFileArray], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
// 为Blob创建一个URL并启动下载
const url = URL.createObjectURL(modifiedFile);
const a = document.createElement('a');
a.href = url;
a.download = outputFileName;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
URL.revokeObjectURL(url);
// 清理工作簿使用的资源
workbook.Dispose();
}
};
return (
<div style={{ textAlign: 'center', height: '300px' }}>
<h1>在 React 中使用 JavaScript 解除 Excel 工作表保护</h1>
<button onClick={UnprotectExcelWorksheet} disabled={!wasmModule}>
解除保护并下载
</button>
</div>
);
}
export default App;
Spire.XLS for JavaScript 提供 Workbook.OpenPassword 属性,用于指定加密 Excel 工作簿的密码,从而让开发者能够加载和处理这些文件。加载加密工作簿后,开发者可以选择使用 Workbook.Unprotect(password: string) 方法移除原有密码,或通过 Workbook.Protect(newPassword: string) 方法设置新的密码。具体步骤如下:
import React, { useState, useEffect } from 'react';
function App() {
const [wasmModule, setWasmModule] = useState(null);
// 加载 Spire.XLS
useEffect(() => {
(async () => {
try {
const publicUrl = process.env.PUBLIC_URL || '';
const spireModule = await import(/* webpackIgnore: true */ `${publicUrl}/spire.xls.js`);
const rawModule = spireModule.default || spireModule;
window.wasmModule = typeof rawModule === 'function'
? await rawModule({ locateFile: p => p.endsWith('.wasm') ? `${publicUrl}/${p}` : p })
: rawModule;
setWasmModule(window.wasmModule);
} catch (error) {
console.error('Failed to load spire.xls.js WASM module:', error);
}
})();
}, []);
// 解除 Excel 工作簿密码的函数
const RemoveResetExcelPassword = async () => {
const wasmModule = window.wasmModule.spirexls;
if (wasmModule) {
// 将字体加载到虚拟文件系统(VFS)中
await window.spire.FetchFileToVFS('Arial.ttf', '/Library/Fonts/', `${process.env.PUBLIC_URL}/static/font/`);
// 将 Excel 文件加载到虚拟文件系统 (VFS)
const inputFileName = '加密Excel工作表.xlsx';
await window.spire.FetchFileToVFS(inputFileName, '', `${process.env.PUBLIC_URL}/static/data/`);
// 创建一个新的工作簿
const workbook = new wasmModule.Workbook();
// 指定工作簿密码
workbook.OpenPassword = 'password';
// 从虚拟文件系统加载 Excel 文件
workbook.LoadFromFile(inputFileName);
// 解除工作簿的保护
workbook.UnProtect('password');
// 重置密码(如有需要)
// workbook.Protect("NewPassword");
// 定义输出文件名
const outputFileName = "取消保护Excel工作表.xlsx";
workbook.SaveToFile({ fileName: outputFileName, version: wasmModule.ExcelVersion.Version2010 });
// 读取保存的文件并转换为Blob对象
const modifiedFileArray = window.dotnetRuntime.Module.FS.readFile(outputFileName);
const modifiedFile = new Blob([modifiedFileArray], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
// 为Blob创建一个URL并启动下载
const url = URL.createObjectURL(modifiedFile);
const a = document.createElement('a');
a.href = url;
a.download = outputFileName;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
URL.revokeObjectURL(url);
// 清理工作簿使用的资源
workbook.Dispose();
}
};
return (
<div style={{ textAlign: 'center', height: '300px' }}>
<h1>在 React 中使用 JavaScript 解除 Excel 工作簿密码</h1>
<button onClick={RemoveResetExcelPassword} disabled={!wasmModule}>
解除密码并下载
</button>
</div>
);
}
export default App;
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
Spire.PDF 11.2.4 已发布。本次更新新增支持使用 PdfTextReplacer 替换指定区域的文本、获取 Action 链接的书签信息以及返回 PdfTextReplacer.ReplaceAllText 替换的个数。该版本还增强了 PDF 到 HTML 和图片的转换功能。此外,许多已知问题也在该版本中成功修复,如打印 PDF 效果不正确的问题。详情请阅读以下内容。
新功能:
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile(inputFile);
for (int i = 0; i < pdf.Pages.Count; i++)
{
PdfPageBase page = pdf.Pages[i] ;
PdfTextReplacer replacer = new PdfTextReplacer(page);
PdfTextReplaceOptions replaceOptions = new PdfTextReplaceOptions();
RectangleF rectangle = new RectangleF(10, 0, 841, 150);
replaceOptions.SetReplacementArea(rectangle);
replaceOptions.ReplaceType = PdfTextReplaceOptions.ReplaceActionType.IgnoreCase;
replacer.Options = replaceOptions;
replacer.ReplaceAllText("sql", "123456");
}
pdf.SaveToFile(outputFile);
pdf.Dispose();PdfDocument doc = new PdfDocument();
doc.LoadFromFile(inputFile);
PdfFormWidget formWidget = (PdfFormWidget)doc.Form;
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.AppendLine("btnAction:");
for (int i = 0; i < formWidget.FieldsWidget.Count; ++i)
{
var field = formWidget.FieldsWidget[i] as PdfButtonWidgetFieldWidget;
if (field.Actions.MouseUp != null && field.Actions.MouseUp is PdfNamedAction)
{
var aaa = (PdfNamedAction)field.Actions.MouseUp;
stringBuilder.AppendLine(formWidget.FieldsWidget[i].Name + "-MouseUp-" + aaa.Destination.ToString());
}
else if (field.Actions.MouseDown != null && field.Actions.MouseDown is PdfNamedAction)
{
var aaa = (PdfNamedAction)field.Actions.MouseDown;
stringBuilder.AppendLine(formWidget.FieldsWidget[i].Name + "-MouseDown--" + aaa.Destination.ToString());
}
else if (field.Actions.MouseDown != null && field.Actions.MouseDown is PdfUriAction)
{
var aaa = (PdfUriAction)field.Actions.MouseDown;
stringBuilder.AppendLine(formWidget.FieldsWidget[i].Name + "-MouseDown--" + aaa.Uri.ToString());
}
else if (field.Actions.MouseUp != null && field.Actions.MouseUp is PdfUriAction)
{
var aaa = (PdfUriAction)field.Actions.MouseUp;
stringBuilder.AppendLine(formWidget.FieldsWidget[i].Name + "-MouseUp-" + aaa.Uri.ToString());
}
else if (field.Actions.MouseDown != null && field.Actions.MouseDown is PdfGotoNameAction)
{
var aaa = (PdfGotoNameAction)field.Actions.MouseDown;
stringBuilder.AppendLine(formWidget.FieldsWidget[i].Name + "-MouseDown-" + aaa.Destination.ToString());
}
}
File.WriteAllText(outputFile, stringBuilder.ToString());
doc.Dispose();PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile(inputFile);
PdfPageBase page = pdf.Pages[0];
PdfTextReplacer replacer = new PdfTextReplacer(page);
int count = replacer.ReplaceAllText("SQL", "ABC");问题修复:
合并和取消合并 Excel 单元格是一项非常有用的功能,可以增强工作表中数据的结构和呈现效果。通过将多个单元格合并为一个单元格,或将合并的单元格恢复为原始状态,你可以更好地格式化数据,使其更具可读性和美观性。本文将演示如何在 React 中使用 Spire.XLS for JavaScript 来合并和取消合并 Excel 单元格。
要在 React 应用中实现合并和取消合并Excel单元格,首先需要下载 Spire.XLS for JavaScript,或者通过 npm 进行安装:
npm i spire.office
下载的产品包整合了Spire.Doc for JavaScript,Spire.XLS for JavaScript,Spire.PDF for JavaScript,Spire.Presentation for JavaScript,使用Spire.XLS for JavaScript的功能需将相应( spire.xls.js,Spire.Xls.Wasm.zip,spire.common.js,Spire.Common.Wasm.zip,_framework 文件复制到项目的 public 文件夹中。同时为了确保文本渲染,相关使用字体文件可自定义路径添加。以下示例中,字体添加路径为:public\static\font。
详细的安装和配置步骤,请参考此教程:如何在 React 项目中集成 Spire.XLS for JavaScript
合并单元格允许用户创建一个跨越多列或多行的标题,使数据更具视觉结构且更易于阅读。使用 Spire.XLS for JavaScript,开发者可以通过 CellRange.Merge() 方法将特定的相邻单元格合并为一个单元格。详细步骤如下:
import React, { useState, useEffect } from 'react';
function App() {
const [wasmModule, setWasmModule] = useState(null);
// 加载 Spire.XLS
useEffect(() => {
(async () => {
try {
const publicUrl = process.env.PUBLIC_URL || '';
const spireModule = await import(/* webpackIgnore: true */ `${publicUrl}/spire.xls.js`);
const rawModule = spireModule.default || spireModule;
window.wasmModule = typeof rawModule === 'function'
? await rawModule({ locateFile: p => p.endsWith('.wasm') ? `${publicUrl}/${p}` : p })
: rawModule;
setWasmModule(window.wasmModule);
} catch (error) {
console.error('Failed to load spire.xls.js WASM module:', error);
}
})();
}, []);
// 执行合并Excel工作表中指定单元格的函数
const MergeCells = async () => {
const wasmModule = window.wasmModule.spirexls;
if (wasmModule) {
// 将字体加载到虚拟文件系统(VFS)中
await window.spire.FetchFileToVFS('Arial.ttf', '/Library/Fonts/', `${process.env.PUBLIC_URL}/static/font/`);
// 将 Excel 文件加载到虚拟文件系统 (VFS)
let inputFileName = '合并单元格_input.xlsx';
await window.spire.FetchFileToVFS(inputFileName, '', `${process.env.PUBLIC_URL}/static/data/`);
// 创建一个新的工作簿
const workbook = new wasmModule.Workbook();
// 从虚拟文件系统加载 Excel 文件
workbook.LoadFromFile(inputFileName);
// 获取第一个工作表
let sheet = workbook.Worksheets.get(0);
// 合并工作表中的特定单元格
sheet.Range.get("A1:D1").Merge();
// 定义输出文件名
const outputFileName = "合并单元格_output.xlsx";
workbook.SaveToFile({ fileName: outputFileName, version: wasmModule.ExcelVersion.Version2010 });
// 读取保存的文件并转换为Blob对象
const modifiedFileArray = window.dotnetRuntime.Module.FS.readFile(outputFileName);
const modifiedFile = new Blob([modifiedFileArray], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
// 为Blob创建一个URL并启动下载
const url = URL.createObjectURL(modifiedFile);
const a = document.createElement('a');
a.href = url;
a.download = outputFileName;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
URL.revokeObjectURL(url);
// 清理工作簿使用的资源
workbook.Dispose();
}
};
return (
<<div style={{ textAlign: 'center', height: '300px' }}>
<h1>在 React 中使用 JavaScript 合并 Excel 工作表中的单元格</h1>
<button onClick={MergeCells} disabled={!wasmModule}>
合并
</button>
</div>
);
}
export default App;
React 应用程序编译成功后,将在默认网页浏览器中打开,通常是 http://localhost:3000。

点击“合并”就能下载合并单元格后的输出Excel文件:

取消合并单元格允许用户将之前合并的单元格恢复为原始状态,从而更好地操作数据和设置格式。使用 Spire.XLS for JavaScript,开发者可以通过 CellRange.UnMerge() 方法取消合并特定的合并单元格。详细步骤如下:
import React, { useState, useEffect } from 'react';
function App() {
const [wasmModule, setWasmModule] = useState(null);
// 加载 Spire.XLS
useEffect(() => {
(async () => {
try {
const publicUrl = process.env.PUBLIC_URL || '';
const spireModule = await import(/* webpackIgnore: true */ `${publicUrl}/spire.xls.js`);
const rawModule = spireModule.default || spireModule;
window.wasmModule = typeof rawModule === 'function'
? await rawModule({ locateFile: p => p.endsWith('.wasm') ? `${publicUrl}/${p}` : p })
: rawModule;
setWasmModule(window.wasmModule);
} catch (error) {
console.error('Failed to load spire.xls.js WASM module:', error);
}
})();
}, []);
// 执行取消合并Excel工作表中特定单元格的函数
const UnmergeCells = async () => {
const wasmModule = window.wasmModule.spirexls;
if (wasmModule) {
// 将字体加载到虚拟文件系统(VFS)中
await window.spire.FetchFileToVFS('Arial.ttf', '/Library/Fonts/', `${process.env.PUBLIC_URL}/static/font/`);
// 将 Excel 文件加载到虚拟文件系统 (VFS)
let inputFileName = '合并单元格.xlsx';
await window.spire.FetchFileToVFS(inputFileName, '', `${process.env.PUBLIC_URL}/static/data/`);
// 创建一个新的工作簿
const workbook = new wasmModule.Workbook();
// 从虚拟文件系统加载 Excel 文件
workbook.LoadFromFile(inputFileName);
// 获取第一个工作表
let sheet = workbook.Worksheets.get(0);
// 取消合并工作表中的特定单元格
sheet.Range.get("A1").UnMerge();
// 定义输出文件名
const outputFileName = "取消合并单元格.xlsx";
workbook.SaveToFile({ fileName: outputFileName, version: wasmModule.ExcelVersion.Version2010 });
// 读取保存的文件并转换为Blob对象
const modifiedFileArray = window.dotnetRuntime.Module.FS.readFile(outputFileName);
const modifiedFile = new Blob([modifiedFileArray], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
// 为Blob创建一个URL并启动下载
const url = URL.createObjectURL(modifiedFile);
const a = document.createElement('a');
a.href = url;
a.download = outputFileName;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
URL.revokeObjectURL(url);
// 清理工作簿使用的资源
workbook.Dispose();
}
};
return (
<div style={{ textAlign: 'center', height: '300px' }}>
<h1>在 React 中使用 JavaScript 取消合并 Excel 工作表中的单元格</h1>
<button onClick={UnmergeCells} disabled={!wasmModule}>
取消合并
</button>
</div>
);
}
export default App;

当处理包含多个合并单元格的电子表格时,一次性取消合并所有单元格可以快速恢复原始单元格的结构。使用 Spire.XLS for JavaScript,开发者可以通过 Worksheet.MergedCells 属性轻松获取工作表中的所有合并单元格,并使用 CellRange.UnMerge() 方法取消合并它们。详细步骤如下:
import React, { useState, useEffect } from 'react';
function App() {
const [wasmModule, setWasmModule] = useState(null);
// 加载 Spire.XLS
useEffect(() => {
(async () => {
try {
const publicUrl = process.env.PUBLIC_URL || '';
const spireModule = await import(/* webpackIgnore: true */ `${publicUrl}/spire.xls.js`);
const rawModule = spireModule.default || spireModule;
window.wasmModule = typeof rawModule === 'function'
? await rawModule({ locateFile: p => p.endsWith('.wasm') ? `${publicUrl}/${p}` : p })
: rawModule;
setWasmModule(window.wasmModule);
} catch (error) {
console.error('Failed to load spire.xls.js WASM module:', error);
}
})();
}, []);
// 执行取消合并Excel工作表中所有合并单元格的函数
const UnmergeCells = async () => {
const wasmModule = window.wasmModule.spirexls;
if (wasmModule) {
// 将字体加载到虚拟文件系统(VFS)中
await window.spire.FetchFileToVFS('Arial.ttf', '/Library/Fonts/', `${process.env.PUBLIC_URL}/static/font/`);
// 将 Excel 文件加载到虚拟文件系统 (VFS)
let inputFileName = '合并单元格.xlsx';
await window.spire.FetchFileToVFS(inputFileName, '', `${process.env.PUBLIC_URL}/static/data/`);
// 创建一个新的工作簿
const workbook = new wasmModule.Workbook();
// 从虚拟文件系统加载 Excel 文件
workbook.LoadFromFile(inputFileName);
// 获取第一个工作表
let sheet = workbook.Worksheets.get(0);
// 获取工作表中的所有合并单元格并将其放入 CellRange 数组
let range = sheet.MergedCells;
// 遍历数组并取消合并所有合并单元格
for (let cell of range) {
cell.UnMerge();
}
// 定义输出文件名
const outputFileName = "取消合并所有合并单元格.xlsx";
workbook.SaveToFile({ fileName: outputFileName, version: wasmModule.ExcelVersion.Version2010 });
// 读取保存的文件并转换为Blob对象
const modifiedFileArray = window.dotnetRuntime.Module.FS.readFile(outputFileName);
const modifiedFile = new Blob([modifiedFileArray], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
// 为Blob创建一个URL并启动下载
const url = URL.createObjectURL(modifiedFile);
const a = document.createElement('a');
a.href = url;
a.download = outputFileName;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
URL.revokeObjectURL(url);
// 清理工作簿使用的资源
workbook.Dispose();
}
};
return (
<div style={{ textAlign: 'center', height: '300px' }}>
<h1>在 React 中使用 JavaScript 取消合并 Excel 工作表中的所有合并单元格</h1>
<button onClick={UnmergeCells} disabled={!wasmModule}>
取消合并
</button>
</div>
);
}
export default App;
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
Word 文档中常常有包含关键数据的表格,将这些表格中的数据从文档中提取出来,可以用于进一步分析、报告制作或内容再创作等多种场景。通过使用 Java 来自动化提取 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>
借助 Spire.Doc for Java,开发人员可以使用 Section.getTables() 方法从 Word 文档中提取表格,然后再通过遍历行和单元格访问表格数据。提取 Word 文档表格的详细操作步骤如下:
import com.spire.doc.*;
import com.spire.doc.documents.Paragraph;
import java.io.FileWriter;
import java.io.IOException;
public class ExtractWordTable {
public static void main(String[] args) {
// 创建一个文档对象
Document doc = new Document();
try {
// 加载一个Word文档
doc.loadFromFile("示例.docx");
// 遍历文档中的各节
for (int i = 0; i < doc.getSections().getCount(); i++) {
// 获取一节
Section section = doc.getSections().get(i);
// 遍历该节中的表格
for (int j = 0; j < section.getTables().getCount(); j++) {
// 获取一个表格
Table table = section.getTables().get(j);
// 收集所有表格内容
StringBuilder tableText = new StringBuilder();
for (int k = 0; k < table.getRows().getCount(); k++) {
// 获取一行
TableRow row = table.getRows().get(k);
// 遍历行中的单元格
StringBuilder rowText = new StringBuilder();
for (int l = 0; l < row.getCells().getCount(); l++) {
// 获取一个单元格
TableCell cell = row.getCells().get(l);
// 遍历段落以获取单元格中的文本
String cellText = "";
for (int m = 0; m < cell.getParagraphs().getCount(); m++) {
Paragraph paragraph = cell.getParagraphs().get(m);
cellText += paragraph.getText() + " ";
}
if (l < row.getCells().getCount() - 1) {
rowText.append(cellText).append("\t");
} else {
rowText.append(cellText).append("\n");
}
}
tableText.append(rowText);
}
// 使用try-with-resources将表格文本写入文件
try (FileWriter writer = new FileWriter("output/Tables/Section-" + (i + 1) + "-Table-" + (j + 1) + ".txt")) {
writer.write(tableText.toString());
}
}
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}

开发人员还可以结合使用 Spire.Doc for Java 和 Spire.XLS for Java,从 Word 文档中提取表格数据并将其写入 Excel 工作表。首先,需要下载 Spire.XLS for Java 或添加以下 Maven 配置:
<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>
将 Word 文档中的表格提取到 Excel 工作簿的详细步骤如下:
import com.spire.doc.*;
import com.spire.doc.documents.Paragraph;
import com.spire.xls.FileFormat;
import com.spire.xls.Workbook;
import com.spire.xls.Worksheet;
public class ExtractWordTableToExcel {
public static void main(String[] args) {
// 创建一个文档对象
Document doc = new Document();
// 创建一个工作簿对象
Workbook workbook = new Workbook();
// 移除默认的工作表
workbook.getWorksheets().clear();
try {
// 加载一个Word文档
doc.loadFromFile("示例.docx");
// 遍历文档中的各节
for (int i = 0; i < doc.getSections().getCount(); i++) {
// 获取一节
Section section = doc.getSections().get(i);
// 遍历该节中的表格
for (int j = 0; j < section.getTables().getCount(); j++) {
// 获取一个表格
Table table = section.getTables().get(j);
// 为每个表格创建一个工作表
Worksheet sheet = workbook.getWorksheets().add("Section-" + (i + 1) + "-Table-" + (j + 1));
for (int k = 0; k < table.getRows().getCount(); k++) {
// 获取一行
TableRow row = table.getRows().get(k);
for (int l = 0; l < row.getCells().getCount(); l++) {
// 获取一个单元格
TableCell cell = row.getCells().get(l);
// 遍历段落以获取单元格中的文本
String cellText = "";
for (int m = 0; m < cell.getParagraphs().getCount(); m++) {
Paragraph paragraph = cell.getParagraphs().get(m);
if (m > 0 && m < cell.getParagraphs().getCount() - 1) {
cellText += paragraph.getText() + "\n";
}
else {
cellText += paragraph.getText();
}
// 将单元格文本写入工作表中对应的单元格
sheet.getRange().get(k + 1, l + 1).setValue(cellText);
}
// 自动调整列宽
sheet.autoFitColumn(l + 1);
}
}
}
}
} catch (Exception e) {
throw new RuntimeException(e);
}
// 保存工作簿到文件,指定Excel版本为2016
workbook.saveToFile("output/WordTableToExcel.xlsx", FileFormat.Version2016);
}
}

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
尊敬的新老客户:
2025 蛇年春节即将来临,成都冰蓝科技有限公司全体职工在此衷心感谢您过去一年对我们的支持与厚爱。值此新春佳节,我们提前恭祝您和您的家人新春快乐,万事顺遂!
为保障节日期间合作有序进行,现将我司春节放假安排通知如下:
在此期间给您造成的诸多不便,敬请谅解!
恭祝蛇年大吉,阖家欢乐!
Excel 是由微软公司开发的一种广泛使用的电子表格应用程序,具有数据分析、可视化和管理等一系列功能。而 ODS(OpenDocument Spreadsheet)是电子表格的开放标准格式,这意味着它可以被各种软件应用程序读取和编辑,包括 LibreOffice 和 Apache OpenOffice。
为了实现兼容性、共享或满足特定的功能要求,有时候可能需要在这两种格式之间进行转换。在本文中,您将学习如何使用 Spire.XLS for .NET 在 C# 中将 Excel 转换为 ODS 或将 OSD 转换为 Excel。
PM> Install-Package Spire.XLS
您可以加载 Excel (.xls 或 .xlsx) 文件,然后通过 Workbook.SaveToFile(string fileName, FileFormat.ODS) 方法将其保存为 ODS 文件。具体步骤如下:
using Spire.Xls;
namespace ConvertExcelToODS
{
class Program
{
static void Main(string[] args)
{
// 创建 Workbook 对象
Workbook workbook = new Workbook();
// 加载 Excel 文件
workbook.LoadFromFile("示例.xlsx");
// 将 Excel 文件保存为 ODS 格式
workbook.SaveToFile("Excel转ODS.ods", FileFormat.ODS);
}
}
}

Spire.XLS for .NET 还支持将 ODS 文件转换回 Excel XLS 或 XLS 格式。具体步骤如下:
using Spire.Xls;
namespace ODSToExcel
{
class Program
{
static void Main(string[] args)
{
// 创建 Workbook 对象
Workbook workbook = new Workbook();
// 加载 ODS 文件
workbook.LoadFromFile("示例.ods");
// 将 ODS 文件保存为 XLSX 格式
workbook.SaveToFile("ODS转XLSX.xlsx", FileFormat.Version2016);
// 将 ODS 文件保存为 XLS 格式
workbook.SaveToFile("ODS转XLS.xls", FileFormat.Version97to2003);
}
}
}

如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
将 Excel 文件转换为文本文件有几个好处。例如,它可以减小文件大小,使数据更易于存储和共享。此外,文本文件的结构通常比较简单,将 Excel 转换为文本文件可以使文档在执行某些任务时更加简单高效。本文将演示如何使用 Spire.XLS for Java 通过 Java 将 Excel 转换为 TXT 文本文件。
首先,您需要在 Java 程序中添加 Spire.Xls.jar 文件作为一个依赖项。您可以从这个链接下载 JAR 文件。如果您使用 Maven,则可以通过在 pom.xml 文件中添加以下代码轻松导入该 JAR 文件。
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.xls</artifactId>
<version>16.9.2</version>
</dependency>
</dependencies>
Spire.XLS for Java 提供了 Worksheet.saveToFile(String fileName, String separator, java.nio.charset.Charset encoding) 方法,用于将指定的工作表转换为 txt 文本文件。具体步骤如下:
import com.spire.xls.*;
import java.nio.charset.Charset;
public class toText {
public static void main(String[] args) {
// 创建 Workbook 对象
Workbook workbook = new Workbook();
// 加载 Excel 文件
workbook.loadFromFile("测试.xlsx");
// 获取第一张工作表
Worksheet worksheet = workbook.getWorksheets().get(0);
// 将工作表保存为TXT文件
Charset charset = Charset.forName("utf8");
worksheet.saveToFile("Excel转Txt.txt", " ", charset);
}
}

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