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的主要内容,如果未能解决你的问题,请参考以下文章

怎么用vba给excel 加密

Java jxl 清除Excel表格中的内容

用Java在excel单元格中设置超链接

如何查看一个excel文件中有多少个表

在Excel中,怎样直接引用另一个表格的资料

怎么用JAVA给生成的EXCEL加密