0

Excel シートのデータを読み込もうとしています。データを取得して、それを使用して読み取ることHSSFWorkbookができます。すべてが正常に機能し、データを取得できます。

Excelシートで手動でProtect Workbook「ABCXYZ」にワークブックのパスワードを設定しました。Excelファイルを開くときにパスワードを尋ねられ、パスワードが正しい場合にのみ、Excelファイルの書き込みまたは読み取りが許可されます。

私の質問は、Java プログラムでこのパスワード「ABCXYZ」を取得する方法です。

HSSFWorkbook wb = new HSSFWorkbook(inputStream);
wb.isWriteProtected();--> This returns false.
4

2 に答える 2

2

私の知る限り、次を使用できます。

(Excel 2003 の場合)

POIFSFileSystem pfs = new POIFSFileSystem(new FileInputStream("yourexcelfile.xls")); 
Biff8EncryptionKey.setCurrentUserPassword("ABCXYZ"); 
HSSFWorkbook wb = new HSSFWorkbook(pfs);

(Excel 2007 の場合)

POIFSFileSystem pfs = newPOIFSFileSystem(POIDataSamples.getPOIFSInstance().openResourceAsStream("yourexcelfile.xlsx")); 
EncryptionInfo encInfo = new EncryptionInfo(pfs); 
Decryptor decryptor = new Decryptor(encInfo); 
decryptor.verifyPassword("ABCXYZ"); 
XSSFWorkbook wb = new XSSFWorkbook(decryptor.getDataStream(pfs));

それが役に立てば幸い!

于 2013-08-23T16:52:20.927 に答える
1
    try {           

        FileInputStream fileInput = new FileInputStream("sample.xls");         
        BufferedInputStream bufferInput = new BufferedInputStream(fileInput);            
        POIFSFileSystem poiFileSystem = new POIFSFileSystem(bufferInput);            

        Biff8EncryptionKey.setCurrentUserPassword("password");            
        HSSFWorkbook workbook = new HSSFWorkbook(poiFileSystem, true);            
        HSSFSheet sheet = workbook.getSheetAt(0);           

        HSSFRow row = sheet.createRow(0);
        Cell cell = row.createCell(0);

        cell.setCellValue("Hello World"); 

        FileOutputStream fileOut = new FileOutputStream(fname);
        workbook.writeProtectWorkbook(Biff8EncryptionKey.getCurrentUserPassword(), "");
        workbook.write(fileOut);



    } catch (Exception ex) {



    } 
于 2013-08-23T16:51:25.300 に答える