我创建了与此帮助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");
但它不设置任何密码
我个人使用JExcelApi
,但我不记得有看过一些关于密码保护进去。 至于JExcelApi
关注也有一些地方的答案被称为是“否”的特点:
- 数据透视表
- 下拉列表
- 在细胞内含有丰富的文本
- 设置重复的行
- 密码保护
我个人认为,如果密码保护会一直可行的(开源的API)他们会有很多互联网上提供的教程,你可以通过一个快速谷歌搜索只是搜索它们,遗憾的是没有免费提供的Java电子表格的API似乎支持写加密的电子表格。
但是如果你愿意使用商业API /库,然后看看这个
你可以用它做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();
}
}