在Java密码保护XLS / XLSX文件(Password protected xls/xlsx

2019-09-18 09:51发布

我创建了与此帮助xls文件密码保护的zip文件http://java.sys-con.com/node/1258827 。

我的问题是,是否有任何的Java API,这将创建密码保护XLS文件,而不是压缩文件。 我想直接申请密码在XLS file.Encryption /解密是该选项,但希望在双当文件点击提示。

编辑:我得到这个
HSSFSheet.protectSheet("xyz"); 但它不仅使表只读。

连我都试过这个hssfworkbook.writeProtectWorkbook("abc", "abc"); 但它不是提示输入密码。

EDIT1:有一个在方法org.apache.poi.hssf.record.crypto.Biff8EncryptionKey包打开密码保护的Excel文件org.apache.poi.hssf.record.crypto.Biff8EncryptionKey.setCurrentUserPassword(password); 有没有设置密码,在未受保护的Excel文件的任何方法?

EDIT2:我试过JExcel API

Workbook w=Workbook.getWorkbook(new File("c:\\employees22533.xls"));
Sheet ws=null;
ws=w.getSheet("Employee List");
SheetSettings sh=ws.getSettings();
sh.setPassword("abc");

但它不设置任何密码

Answer 1:

我个人使用JExcelApi ,但我不记得有看过一些关于密码保护进去。 至于JExcelApi关注也有一些地方的答案被称为是“否”的特点:

  • 数据透视表
  • 下拉列表
  • 在细胞内含有丰富的文本
  • 设置重复的行
  • 密码保护

我个人认为,如果密码保护会一直可行的(开源的API)他们会有很多互联网上提供的教程,你可以通过一个快速谷歌搜索只是搜索它们,遗憾的是没有免费提供的Java电子表格的API似乎支持写加密的电子表格。

但是如果你愿意使用商业API /库,然后看看这个



Answer 2:

你可以用它做JACOB 。 这里是没有保护temp.xsl文件保护temptest.xsl文件的代码。 你需要有jacob.jar雅各-XX-XX.dll在类路径

package test;

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;

public class excel 
{
 private ActiveXComponent excelApp = null;
 public excel()
 {
 String xlsFile = "D:\\temp.xls";
 excelApp = new ActiveXComponent("Excel.Application");
 excelApp.setProperty("Visible", new Variant(false));
 Object workbooks = excelApp.getProperty("Workbooks").toDispatch();
 Object workbook = Dispatch.invoke((Dispatch) workbooks,"Open",Dispatch.Method,new Object[] {xlsFile, new Variant(false),new Variant(true) }, new int[1]).toDispatch();           

 Dispatch.call((Dispatch)workbook, "SaveAs", new Variant("D:\\temptest.xls"),new Variant("1"),new Variant ("pass"));

 excelApp.invoke("Quit", new Variant[] {});
 }

 public static void main(String arg[])
 {
  System.out.println("hello");
  new excel();
 }

 }


文章来源: Password protected xls/xlsx file in java