我已经创建了受密码保护的zip文件,该文件在http://java.sys-con.com/node/1258827的帮助下有xls文件。
我的问题是,是否有任何java api将创建受密码保护的xls文件而不是zip文件。 我想直接在xls文件上应用密码。加密/解密是一个选项,但想要在双击文件时提示。
编辑:
我得到了这个
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");
但它没有设置任何密码
答案 0 :(得分:2)
我个人使用过JExcelApi
,但我不记得曾见过有关密码保护的内容。就JExcelApi
而言,有许多功能,其答案被称为“否”:
我个人认为如果可以使用密码保护(使用开源API) 他们将在互联网上提供大量的教程,你可以通过快速的谷歌搜索来搜索它们。不幸的是,所有免费提供的Java电子表格API似乎都不支持编写加密的电子表格。
但是如果您愿意使用商业API /库,请参阅this
答案 1 :(得分:0)
您可以使用JACOB执行此操作。这是没有保护temp.xsl文件到受保护的temptest.xsl文件的代码。您需要在类路径中使用jacob.jar和jacob-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();
}
}