Защищенный паролем Excel File

У меня есть электронная таблица Excel, которая защищена паролем. Я должен открыть эту электронную таблицу и считать данные с него. Я пытался использовать ПОИ API напрасно. Решение для Java было бы предпочтено, но любые идеи будут полезны.

Править: Да, у меня есть пароль. Файл защищен паролем в Excel; пароль должен быть введен для просмотра электронной таблицы.

Edit2: Я не могу открыть его с ПОИ с паролем, я ищу альтернативное решение.

5
задан dhorn 9 April 2010 в 17:09
поделиться

2 ответа

Вы можете использовать JExcelApi .

Прошло много времени с тех пор, как я делал это, поэтому я, возможно, не говорю вам, как это сделать правильно, но определенно есть способ сделать это с помощью JExcelApi. Попробуйте использовать приведенный ниже источник:

Workbook workbook = Workbook.getWorkbook(new File("/path/to/protected.xls"));
workbook.setProtected(false);
WritableWorkbook copy = Workbook.createWorkbook(new File("/path/to/unprotected.xls"), workbook);
WritableSheet[] sheets = copy.getSheets();

for (WritableSheet sheet : sheets){
    sheet.getSettings().setProtected(false);
}

copy.write();
copy.close();

Конечно, вам нужно будет импортировать необходимые классы и отловить необходимые исключения.

0
ответ дан 14 December 2019 в 01:05
поделиться

добавьте файл excel в ODBC Sources (из панели управления->Administrative Tools), а затем выполните код:

// program to extract data from excel file

import java.sql.Connection ;
import java.sql.Statement  ;
import java.sql.ResultSet  ;
import java.sql.ResultSetMetaData ;
import java.sql.DriverManager ;
import java.sql.SQLException ;

public class ExtractExcelData {

    public static void main (String[] args) {
        try {
            Class.forName(DRIVER);
            connection = DriverManager.getConnection(URL,userName,password);
        }
        catch (ClassNotFoundException cnfe) {
            System.err.println("unable to load excel  driver");
            return  ;
        }
        catch (SQLException se) {
            System.err.println("cannot connect to excel file");
            return  ;
        }

        try {
            statement = connection.createStatement();
            String select = "SELECT * FROM [Sheet1$]";
            resultSet = statement.executeQuery(select);
            metaData = resultSet.getMetaData();

            int count = metaData.getColumnCount();
            while ( resultSet.next() ) {

                String col1 =  resultSet.getString(1) ; 
                String col2 =  resultSet.getString(2) ; 
                String col3 =  resultSet.getString(3) ; 

                System.out.println( col1 ) ;
                System.out.println( col2 ) ;
                System.out.println( col3 ) ;

                System.out.println();
            }
        }
        catch (SQLException se) {
            System.err.println("cannot execute query");
            return ;
        }

        try {
            statement.close();
            resultSet.close();
        }
        catch (SQLException se ) {
            System.err.println("unable to close excel file");
            return  ;
        }
    }

    private static final String userName = "" ;
    private static final String password = "" ;
    private static final String URL = "jdbc:odbc:testexcel" ;
    private static final String DRIVER = "sun.jdbc.odbc.JdbcOdbcDriver" ;

    private static Connection connection ;
    private static Statement statement ;
    private static ResultSet resultSet ;
    private static ResultSetMetaData metaData ;
}
1
ответ дан 14 December 2019 в 01:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: