[英]Password protected xls/xlsx file in java
我在这个http://java.sys-con.com/node/1258827的帮助下创建了具有 xls 文件的受密码保护的 zip 文件。
我的问题是,是否有任何 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");
但是它没有设置任何密码
我个人使用过JExcelApi
,但我不记得曾在其中看到过有关密码保护的内容。 就JExcelApi
而言,有许多功能已知答案为“否”:
我个人认为,如果密码保护是可能的(使用开源 api),他们会在互联网上提供很多教程,您可以通过快速谷歌搜索简单地搜索它们,不幸的是,似乎没有免费可用的 Java 电子表格 API支持编写加密电子表格。
但是,如果您愿意使用商业 api/library,请参阅此
您可以使用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();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.