2016-03-30 49 views
0
NPOIFSFileSystem fs = new NPOIFSFileSystem(new File("C://Users//RK5026051//Downloads//500_Lanes.xls")); 
     EncryptionInfo info = new EncryptionInfo(fs); 
     Decryptor d = Decryptor.getInstance(info); 
     if (d.verifyPassword("manh.com")) { 
      HSSFWorkbook wb = new HSSFWorkbook(d.getDataStream(fs)); 
     } else { 
      System.out.println("wrong password"); 
     } 
     // TODO Auto-generated method stub 
    } 

Error--javaを使用してパスワードで保護されたExcelシートの行と列を更新できますか?

Exception in thread "main" java.io.FileNotFoundException: no such entry: "EncryptionInfo", had: [_VBA_PROJECT_CUR, SummaryInformation, DocumentSummaryInformation, Workbook] 
    at org.apache.poi.poifs.filesystem.DirectoryNode.getEntry(DirectoryNode.java:370) 
    at org.apache.poi.poifs.filesystem.DirectoryNode.createDocumentInputStream(DirectoryNode.java:177) 
    at org.apache.poi.poifs.crypt.EncryptionInfo.<init>(EncryptionInfo.java:51) 
    at org.apache.poi.poifs.crypt.EncryptionInfo.<init>(EncryptionInfo.java:47) 
    at auto.excel.main(excel.java:15) 

私はセレンを使用してアプリケーションからファイルをダウンロードしています、私は、Excelファイル内のいくつかのフィールドを更新し、再度アップロードする必要があります。**

私が知っていますExcelファイルのパスワードをダウンロードしているので、特定の行と列を更新するようにコードを書く必要がありますが、そのExcelファイルでは操作できません。パスワードが保護されているからです。

私はスタックオーバーフローでいくつかの回答を試みましたが、私は動作していません。また、私はこのトピックについてインターネット上に多くの資料を手に入れませんでした。ここで iは

NPOIFSFileSystem fs = new NPOIFSFileSystem(new File("D://protectedfile.xlsx")); 
EncryptionInfo info = new EncryptionInfo(fs); 
Decryptor d = Decryptor.getInstance(info); 
if (d.verifyPassword("password")) { 
    XSSFWorkbook wb = new XSSFWorkbook(d.getDataStream(fs)); 
} else { 
    // Password is wrong 
} 
+0

可能な複製: - http://stackoverflow.com/questions/25994772/read-password-protected-excel-file-xlsx-using-java –

+0

あなたはwhコードが失敗するのですか?つまり、 'verifyPassword'ブロックが実行されたのでしょうか、' else'ですか? –

+0

開こうとしているファイルの種類は? '.xls'または' .xlsx'ですか? (彼らは異なっている!) – Gagravarr

答えて

1

ファーストをアップしようとしたサンプル・コードで、私はそれは、これらの日トレンディではないですけど、あなたがすべきreally really read the Apache POI documentation on reading protected files。それで、保護されたXLSファイルにXLSX復号化方法を使用しようとしていることがわかりますが、これはうまくいきません!

しかし、どこへ行くにも簡単な方法があります - WorkbookFactory can take the password of your spreadsheetので

を開くときに、ちょうど非常に単純にコードを変更:

Workbook wb = WorkbookFactory.create(new File("protected.xls"), "password", true); 

読み取り専用モードでブックを開きます。すなわち、提供されたパスワードを使用してそれを読んで、必要なタイプを自動的に特定します。

関連する問題