Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Résolu] java POI fichier excel en protected view

    9 août 2017 à 15:29:25

    Bonjour à tous,

    Ma question : savez vous comment je peux activer enable editing depuis java à l'ouverture du fichier excel via apache POI3.16 ?

    Je suis actuellement en train de développer un petit programme qui exploite des données présent sur un fichier excel (que l'on exporte depuis un logiciel mère et je n'ai pas la main sur ce dernier). Tout marche très bien si j'ouvre une fois manuellement le fichier excel et que je clique sur enable editing, je save et je ferme le fichier. En revanche, sans cette manip j'ai l’erreur suivante à l’exécution  :

    Exception in thread "main" org.apache.poi.hssf.record.RecordInputStream$LeftoverDataException: Initialisation of record 0x203(NumberRecord) left 4 bytes remaining still to be read.
    at org.apache.poi.hssf.record.RecordInputStream.hasNextRecord(RecordInputStream.java:177)
    at org.apache.poi.hssf.record.RecordFactoryInputStream.nextRecord(RecordFactoryInputStream.java:234)
    at org.apache.poi.hssf.record.RecordFactory.createRecords(RecordFactory.java:494)
    at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:348)
    at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:99)
    at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:256)
    at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:226)
    at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:205)
    at algorithm.Read.<init>(Read.java:22)
    at Run.main(Run.java:25)

    j'ouvre mon fichier excel avec ces lignes de code :

    try {		
    	wb = WorkbookFactory.create(new File(sourcePath)); 
    }
    catch (EncryptedDocumentException e){
    	System.out.println(e);
    }
    catch (InvalidFormatException e){
    	System.out.println(e);
    }



    -
    Edité par Deft666 18 septembre 2017 à 14:12:38

    • Partager sur Facebook
    • Partager sur Twitter
      10 août 2017 à 11:19:47

      Bonjour,

      J'ai une idée mais avant de me lancer dedans, je voudrais votre avis. Est-ce possible de créer un nouveau fichier excel (avec par défaut le protected view disable) et copier les données du fichier protéger dedans ? La question est comment accéder aux données protégées sans ouvrir le fichier ? 

      Si vous avez d'autres propositions je suis également preneur.

      Merci à vous.

      • Partager sur Facebook
      • Partager sur Twitter
        10 août 2017 à 15:58:41

        (workbookName).getSheet(0).getSettings().setProtected(/* true or false*/);

        je tiens a dire que j'ai trouvé cette réponse en moins de 5 secondes avec mon ami google ..

        -
        Edité par CrevetteMagique 10 août 2017 à 15:59:15

        • Partager sur Facebook
        • Partager sur Twitter
          10 août 2017 à 18:19:16

          Salut Zérotisme,

          merci pour ta réponse et ta recherche rapide, trop rapide peut être puisque ces méthodes n'existe pas dans POI ! Cela dit elles existent belle et bien mais dans une autre API nommé JExcel qui n'est plus mise à jour depuis 2009 et qui par conséquent ne gère pas le .xslx. (comparaison entre apache POI et JExcel : https://stackoverflow.com/questions/14980717/what-is-the-better-api-to-reading-excel-sheets-in-java-jxl-or-apache-poi)

          De plus, je ne peux pas du tout accéder à une sheet sans déclencher l’erreur du coup je ne pourrais même pas utiliser getSetting() sur la sheet.

          J'ai vu que POI pouvait gérer les fichier crypté avec mot de passe, mais je ne trouve rien quant à l'activation du contenu et quant à mes recherche sur notre ami commun, les seuls posts que je trouve restent également sans réponse.

          En fouillant dans POI j'ai trouvé ça (https://poi.apache.org/apidocs/org/apache/poi/POIReadOnlyDocument.html) mais je n'ai aucune idée de comment ça marche et si ça pourrais répondre à mon besoin.

          Je commence à désespérer et je prend toutes les idées !

          merci

          -
          Edité par Deft666 10 août 2017 à 18:20:06

          • Partager sur Facebook
          • Partager sur Twitter
            11 août 2017 à 15:06:44

            Deft666 a écrit:

            Salut Zérotisme,

            merci pour ta réponse et ta recherche rapide, trop rapide peut être puisque ces méthodes n'existe pas dans POI ! Cela dit elles existent belle et bien mais dans une autre API nommé JExcel qui n'est plus mise à jour depuis 2009 et qui par conséquent ne gère pas le .xslx. (comparaison entre apache POI et JExcel : https://stackoverflow.com/questions/14980717/what-is-the-better-api-to-reading-excel-sheets-in-java-jxl-or-apache-poi)

            De plus, je ne peux pas du tout accéder à une sheet sans déclencher l’erreur du coup je ne pourrais même pas utiliser getSetting() sur la sheet.

            J'ai vu que POI pouvait gérer les fichier crypté avec mot de passe, mais je ne trouve rien quant à l'activation du contenu et quant à mes recherche sur notre ami commun, les seuls posts que je trouve restent également sans réponse.

            En fouillant dans POI j'ai trouvé ça (https://poi.apache.org/apidocs/org/apache/poi/POIReadOnlyDocument.html) mais je n'ai aucune idée de comment ça marche et si ça pourrais répondre à mon besoin.

            Je commence à désespérer et je prend toutes les idées !

            merci

            -
            Edité par Deft666 about 20 hours ago

            Désolé que ma réponse t'ai pas aidé ( et apres relecture , dsl si elle semblait bête ! c'etait pas le cas ^^ ). Je suis a l'école , mais je tenterai quelques recherches supplémentaires

            • Partager sur Facebook
            • Partager sur Twitter
              12 août 2017 à 11:51:48

              En tout cas merci de m'avoir répondu, tu es le seul à avoir proposé quelque chose. J'ai le sentiment que ce problème est insolvable de toute façon.
              • Partager sur Facebook
              • Partager sur Twitter
                18 septembre 2017 à 14:12:04

                Salut à tous j'ai enfin la réponse à cette question :

                C'est impossible !!!!

                Mais, car il y a toujours un mais, il suffit juste de modifier les paramètres de protection dans excel (si vous voulez accédez à un fichier excel ; word pour word etc) :

                -option/ trust center / trust center setting / protected view / uncheck all tree option

                -option/ trust center / trust center setting /file block setting / uncheck all option in load column

                Il y a des tutos  plus détaillés sur le net.

                Bonne continuation et j’espère que ce post pourra aider des gens car j'ai vraiment bien galéré sur ce problème.

                ++

                • Partager sur Facebook
                • Partager sur Twitter

                [Résolu] java POI fichier excel en protected view

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown