簡體   English   中英

java中密碼保護的xls/xlsx文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM