java 可以读取加密的Excel文件吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 可以读取加密的Excel文件吗?相关的知识,希望对你有一定的参考价值。

密码我 知道,就是要java读取加密Excel文件的内容要写入到数据库中

参考技术A 首先你这个Excel文件是从哪里来的,很可能是从一个页面上下载来的,而这个页面做的功能就是导出Excel,但做偷懒了,没有用jxl和POI等库,而是用直接用jsp生成html写的。

因此你上传时就要要判断了,如果是真的excel就要用jxl或POI解析,如果只是html,就要用HTML的解析方法了。追问

能百度到的,就别发了,文件是我自己建的,有密码
不过还是谢谢啦!

参考技术B 可以的,搜一下jxl追问

jxl 好像不可以读取2007以上的版本吧?
jxl,中哪个方法啊,我试过了所有方法都不行

追答docx4j 搜一下
public class Testclass 

public void readFromdoc()
//   JAXBContext context = org.docx4j.jaxb.Context.jc; 
   
   String inputfilepath = System.getProperty("user.dir") + "\\\\" + "mytest.docx";
   System.out.println(inputfilepath);          


   // Load the docx
   WordprocessingMLPackage wordMLPackage=null;
   try 
      wordMLPackage = (WordprocessingMLPackage)OpcPackage.load(new java.io.File(inputfilepath), "password");
    catch (Docx4JException e1) 
      System.out.println("Unable to call load method from OpcPackage");
      e1.printStackTrace();
      System.exit(0);
   
   // Save it
   String outputfilepath = System.getProperty("user.dir") + "/OUT_OpenAndSaveRoundTripTest.docx";
   try 
      wordMLPackage.save(new File(outputfilepath));
    catch (Docx4JException e) 
      System.out.println("Unable to output file");
      e.printStackTrace();
      System.exit(0);
   

   

追问

我的是Excel,不是word?

追答

那你就找xlsx4j。

参考技术C POIFSFileSystem pfs = newPOIFSFileSystem(POIDataSamples.getPOIFSInstance().openResourceAsStream("yourexcelfile.xlsx"));
EncryptionInfo encInfo = new EncryptionInfo(pfs);
Decryptor decryptor = new Decryptor(encInfo);
decryptor.verifyPassword("ABCXYZ");
XSSFWorkbook wb = new XSSFWorkbook(decryptor.getDataStream(pfs));
参考:(http://bbs.csdn.net/topics/390560290)本回答被提问者采纳
参考技术D 只要你能解密,文件读取我有办法。2003和2007都可以。追问

读取不加密有文件,我也有办法,我要的是读取加密的Excel

poi和jxl 都可以,或者有其它的组件也可以!

追答

你不是说有密码吗,你解密了和读普通的excel文件有区别吗?

追问

客户给的文档就是加密的。密码写在系统里。直接读取加密的Excel。

追答

我想不可能有直接读加密的方法。因为加密有很多种方式。首先你还是读出加密的excel进行解密。然后再读内容靠谱些。

追问

java给Excel解密,我也找不到方法啊,大侠

追答

问客户是用什么方式加密的。既然要你读,。还加什么j8密

excel的某个sheet被加密了,怎么用java打开并读取这个sheet

用jxl,取得sheet会失败

参考技术A 解锁sheet,再读取。追问

excel可以直接打开这个sheet并读取的,也就是说excel自己可以不用解锁就可以直接读取
所以想要的是不解锁直接读取,java是做不到么?

追答

你的意思是直接用java解锁? 这个我还真不知道怎么搞,你问问大神们吧,我也搞不定。

参考技术B 发给我我帮你解锁!

以上是关于java 可以读取加密的Excel文件吗?的主要内容,如果未能解决你的问题,请参考以下文章

java poi 读取有密码加密的Excel文件

java poi技术读取到数据库

java poi读取日期格式数据“2012-01-01 12:00:00”

用java领域技术给excel加密?

java如何读取一个加密后的.xls文件

excel的某个sheet被加密了,怎么用java打开并读取这个sheet