java 加密excel_Java 加密/解密Excel

本文介绍了如何使用Java程序对Excel工作簿和工作表进行加密和解密。通过示例代码展示了如何设置密码保护,保护工作表特定区域,隐藏公式,以及撤销密码保护的方法。示例代码使用了Free Spire.XLS for Java库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

设置excel文件保护时,通常可选择对整个工作簿进行加密保护,打开文件时需要输入密码;或者对指定工作表进行加密,即设置表格内容只读,无法对工作表进行编辑。另外,也可以对工作表特定区域设置保护,即设置指定区域可编辑或者隐藏数据公式,保护数据信息来源。无需设置文档保护时,可撤销密码保护,即解密文档。下面,将通过java程序演示以上加密、解密方法的实现。

示例大纲

1. Excel工作簿

1.1 加密工作簿

1.2 解密工作簿

2. Excel工作表

2.1 加密工作表

2.2 加密工作表指定数据范围

2.3 设置工作表公式不可见

2.4解密Excel工作表

工具

工具:Free Spire.XLS for Java (免费版)

注1: 可通过

Jar导入效果:

d311d96c6433b2eb7ff0f56702ab160f.png

注2:这里设置工作表保护时,可支持多种不同类型的保护(如下图),本文示例以选择其中一种为例。

8e534716d16ebcade64d3d22269202e6.png

Java代码示例

【示例1】加密工作簿

import com.spire.xls.*;

public class ProtectWb {

public static void main(String[] args) {

//加载测试文档

Workbook wb = new Workbook();

wb.loadFromFile("sample.xlsx");

//使用密码加密工作簿

wb.protect("123456");

//保存文档

wb.saveToFile("ProtectWorkbook.xlsx", ExcelVersion.Version2010);

wb.dispose();

}

}

工作簿加密结果:

923b7918af52c36463964c16a4c0de09.png

【示例2】解密工作簿

import com.spire.xls.*;

public class UnprotectWb {

public static void main(String[] args) {

//加载文档

Workbook wb = new Workbook();

wb.setOpenPassword("123456");//源文档密码

wb.loadFromFile("ProtectWorkbook.xlsx");

//解除密码保护

wb.unProtect();

//保存文档

wb.saveToFile("UnprotectWb.xlsx");

wb.dispose();

}

}

运行程序,生成的工作簿文件将不再有密码保护。

【示例3】加密工作表

import com.spire.xls.*;

import java.util.EnumSet;

public class ProtectSheet {

public static void main(String[] args) {

//加载测试文档

Workbook wb = new Workbook();

wb.loadFromFile("sample.xlsx");

//获取第一个工作表

Worksheet sheet = wb.getWorksheets().get(0);

//使用密码加密保护

sheet.protect("654321", EnumSet.of(SheetProtectionType.All));

//保存文档

wb.saveToFile("ProtectWorksheet.xlsx", ExcelVersion.Version2010);

wb.dispose();

}

}

工作表加密结果:

b02de62b2d95b7296cdd26c53b3e6600.png

【示例4】加密工作表指定数据范围

import com.spire.xls.*;

import java.util.EnumSet;

public class ProtectRange {

public static void main(String[] args) {

//加载测试文档

Workbook wb = new Workbook();

wb.loadFromFile("sample.xlsx");

//获取第一个工作表

Worksheet sheet = wb.getWorksheets().get(0);

//密码加密工作表

sheet.protect("123654", EnumSet.of(SheetProtectionType.All));

//指定可编辑的区域

sheet.addAllowEditRange("AllowEdit",sheet.getCellRange(3,1,11,8));

//保存文档

wb.saveToFile("ProtectRange.xlsx", ExcelVersion.Version2010);

wb.dispose();

}

}

指定区域加密结果:

d0311ed6b759ac463535eed46e981ebb.png

【示例5】设置工作表公式隐藏

import com.spire.xls.*;

import java.util.EnumSet;

public class ProtectAndHideFormula {

public static void main(String[] args) {

//加载文档

Workbook  wb = new Workbook();

wb.loadFromFile("sample.xlsx");

//获取工作表

Worksheet sheet = wb.getWorksheets().get(0);

//设置加密

sheet.protect("123", EnumSet.of(SheetProtectionType.All));

//隐藏公式

sheet.getAllocatedRange().isFormulaHidden(true);

//保存文档

wb.saveToFile("HideFormula.xlsx",FileFormat.Version2010);

wb.dispose();

}

}

设置公式隐藏结果:

c4d175071720ba510b6f6d6398817357.png

【示例6】解密Excel工作表

import com.spire.xls.*;

public class UnprotectSheet {

public static void main(String[] args) {

//加载文档

Workbook  wb = new Workbook();

wb.loadFromFile("ProtectWorksheet.xlsx");

//获取工作表

Worksheet sheet = wb.getWorksheets().get(0);

//解除密码保护(需输入源文档密码)

sheet.unprotect("654321");

//保存文档

wb.saveToFile("UnprotectSheet.xlsx",ExcelVersion.Version2010);

wb.dispose();

}

}

运行程序,生成的文档中,指定工作表将不再受保护。

(本文完)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值