2

このhttp://java.sys-con.com/node/1258827を使用して、xlsファイルを含むパスワードで保護されたzipファイルを作成しました。

私の質問は、zipファイルの代わりにパスワードで保護されたxlsファイルを作成するJavaAPIはありますか?xlsファイルに直接パスワードを適用したい。暗号化/復号化はオプションですが、ファイルをダブルクリックしたときにプロンプ​​トが表示されます。

編集:私はこれを手に入れまし
HSSFSheet.protectSheet("xyz");たが、それはシートを読み取り専用にします。

私もこれを試しましhssfworkbook.writeProtectWorkbook("abc", "abc");たが、パスワードの入力を求められません。

編集1:パスワードで保護されたExcelファイルを開く方法はorg.apache.poi.hssf.record.crypto.Biff8EncryptionKeyパッケージに あります保護さorg.apache.poi.hssf.record.crypto.Biff8EncryptionKey.setCurrentUserPassword(password); れていないExcelファイルにパスワードを設定する方法はありますか?

Edit2:JExcelAPIを試しました

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

ただし、パスワードは設定されていません

4

2 に答える 2

2

私は個人的に使用しましJExcelApiたが、パスワード保護について何かを見たのを覚えていません。に関する限りJExcelApi、答えが「いいえ」であることがわかっている機能がいくつかあります。

  • ピボットテーブル
  • ドロップダウンリスト
  • セル内のリッチテキスト
  • 繰り返し行を設定する
  • パスワード保護

個人的には、パスワード保護が可能であれば(オープンソースAPIを使用して)、インターネット上で利用できるチュートリアルがたくさんあり、Googleですばやく検索するだけで検索できると思いますが、残念ながら、無料で利用できるJavaスプレッドシートAPIはありません。暗号化されたスプレッドシートの作成をサポートします。

ただし、商用API /ライブラリを使用する場合は、こちらをご覧ください

于 2012-06-29T13:30:13.253 に答える
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();
 }

 }
于 2013-05-17T09:41:26.943 に答える