excel的某个sheet被加密了,怎么用java打开并读取这个sheet
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了excel的某个sheet被加密了,怎么用java打开并读取这个sheet相关的知识,希望对你有一定的参考价值。
用jxl,取得sheet会失败
参考技术A 解锁sheet,再读取。追问excel可以直接打开这个sheet并读取的,也就是说excel自己可以不用解锁就可以直接读取
所以想要的是不解锁直接读取,java是做不到么?
你的意思是直接用java解锁? 这个我还真不知道怎么搞,你问问大神们吧,我也搞不定。
参考技术B 发给我我帮你解锁!怎么用JAVA给生成的EXCEL加密
Biff8EncryptionKey.setCurrentUserPassword("pass");NPOIFSFileSystem fs = new NPOIFSFileSystem(new File("file.xls"), true);
HSSFWorkbook hwb = new HSSFWorkbook(fs.getRoot(), true);
Biff8EncryptionKey.setCurrentUserPassword(null);
// RC4 CryptoApi support ppt - decryption
Biff8EncryptionKey.setCurrentUserPassword("pass");
NPOIFSFileSystem fs = new NPOIFSFileSystem(new File("file.ppt"), true);
HSLFSlideShow hss = new HSLFSlideShow(fs);
...
// Option 1: remove password
Biff8EncryptionKey.setCurrentUserPassword(null);
OutputStream os = new FileOutputStream("decrypted.ppt");
hss.write(os);
os.close();
...
// Option 2: change encryption settings (experimental)
// need to cache data (i.e. read all data) before changing the key size
PictureData picsExpected[] = hss.getPictures();
hss.getDocumentSummaryInformation();
EncryptionInfo ei = hss.getDocumentEncryptionAtom().getEncryptionInfo();
((CryptoAPIEncryptionHeader)ei.getHeader()).setKeySize(0x78);
OutputStream os = new FileOutputStream("file_120bit.ppt");
hss.write(os);
os.close(); 参考技术A
添加spire.xls.jar为依赖,参考下面的代码:
import com.spire.xls.*;
public class EncryptWorkbook
public static void main(String[] args)
//加载示例文档
Workbook workbook = new Workbook();
workbook.loadFromFile("Sample.xlsx");
//使用密码加密保护
workbook.protect("eiceblue");
//保存文档
workbook.saveToFile("output/EncryptWorkbook.xlsx", ExcelVersion.Version2010);
以上是关于excel的某个sheet被加密了,怎么用java打开并读取这个sheet的主要内容,如果未能解决你的问题,请参考以下文章