Apache POI(3):给Excel文件添加打开密码

package com.hthk.iisz.util;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;

import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.openxml4j.opc.PackageAccess;
import org.apache.poi.poifs.crypt.EncryptionInfo;
import org.apache.poi.poifs.crypt.EncryptionMode;
import org.apache.poi.poifs.crypt.Encryptor;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;

/*
 * 给xlsx的excel文件设置打开文件的密码
 */
public class ExcelPasswordUtils {
	
	 /*
	  * excelFilePath : excel文件路径
	  * excelPassword : 打开文件密码
	  */
	 public static void  encryptExcel(String excelFilePath,String excelPassword) throws Exception{
			File fileSoucre = new File(excelFilePath);
			// Add password protection and encrypt the file
			POIFSFileSystem fs = new POIFSFileSystem();
			EncryptionInfo info = new EncryptionInfo(fs, EncryptionMode.agile);
			Encryptor enc = info.getEncryptor();

			// set the password
			enc.confirmPassword(excelPassword);

			// encrypt the file
			OPCPackage opc = OPCPackage.open(fileSoucre,PackageAccess.READ_WRITE);
			OutputStream os = enc.getDataStream(fs);
			opc.save(os);
			opc.close();

			// save the file back to the filesystem
			FileOutputStream fos = new FileOutputStream(fileSoucre);
			fs.writeFilesystem(fos);
			fos.close();
	    }
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
Apache POI 是一个用于读写 Microsoft Office 格式文件的 Java 库。它可以用来修复损坏的 Excel 文件。下面是修复损坏的 Excel 文件的步骤: 1. 使用 POIFSFileSystem 对象读取 Excel 文件。 2. 使用 HSSFWorkbook 对象读取 Excel 文件中的工作簿。 3. 使用 HSSFSheet 对象读取工作簿中的工作表。 4. 使用 HSSFRow 对象读取工作表中的行。 5. 使用 HSSFCell 对象读取行中的单元格。 6. 如果损坏的单元格可以修复,则使用 HSSFCellStyle 对象设置单元格的样式。 7. 使用 HSSFCell 对象设置单元格的值。 8. 使用 FileOutputStream 对象将修复后的 Excel 文件写回磁盘。 以下是一个简单的示例: ```java import java.io.FileInputStream; import java.io.FileOutputStream; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; public class ExcelRepair { public static void main(String[] args) throws Exception { String filename = "corrupted.xlsx"; FileInputStream fis = new FileInputStream(filename); POIFSFileSystem fs = new POIFSFileSystem(fis); HSSFWorkbook wb = new HSSFWorkbook(fs); Sheet sheet = wb.getSheetAt(0); Row row = sheet.getRow(0); Cell cell = row.getCell(0); if (cell.getStringCellValue().equals("CORRUPTED")) { cell.setCellValue("FIXED"); } FileOutputStream fos = new FileOutputStream(filename); wb.write(fos); fos.close(); wb.close(); } } ``` 这个示例假设 Excel 文件中的第一个单元格的值为 "CORRUPTED",它将被替换为 "FIXED"。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值