2009-12-29 12 views
4

J'ai besoin de générer un document ms-word à partir d'une requête pl/sql pour exporter un ensemble de rapports via un navigateur Web. J'ai cherché une manière spécifique de modifier les en-têtes de contenu en utilisant owa_util.mime_header etc etc mais je n'ai pas pu vraiment obtenir une preuve de concept pour que la page web présente l'utilisateur pour télécharger/ouvrir/enregistrer une ms -document Word.Comment exporter un document ms-word (ou rtf) (à partir d'un navigateur Web) généré par pl/sql?

Je sais que ce n'est pas beaucoup, mais ..

begin 
    OWA_UTIL.MIME_HEADER ('application/vnd.ms-word', false); 
    htp.print('Content-Disposition:attachment;filename="test.doc"'); 
    OWA_UTIL.HTTP_HEADER_CLOSE; 
     for x in (select first_column, second_column from my_table) 
      loop 
       htp.p(x.first_column||'<br/>'||x.second_column||'<br/><br/>'); 
      end loop; 
    end; 

Quelqu'un pourrait-il s'il vous plaît faire la lumière sur comment puis-je créer une procédure qui génère une sortie au format html qui interceptent les en-têtes de navigateur et imprime le contenu de la requête à un document Word? Par ailleurs, l'environnement actuel (restriction) J'exécute ceci à partir de: Oracle APEX 3.0.1 (pas 3.1, qui je crois a une fonction d'exportation vers doc word).

Merci d'avance.

Répondre

4

Dans Apex, vous pouvez faire une page qui est complètement générée à partir d'une procédure de votre décision:

  1. Créer une page blanche.
  2. Sous processus, cliquez sur Créer et choisissez PL/SQL. Donnez-lui un nom et laissez l'option par défaut "En charge - Avant l'en-tête".
  3. Pour processus Page PL/SQL, entrez les informations suivantes:

    BEGIN 
        myprocedure; 
        htmldb_application.g_unrecoverable_error := true; 
    END; 
    
  4. Créez votre procédure (le code que vous avez devrait fonctionner ok) et il devrait fonctionner correctement.

EDIT: le code de "myprocedure" devrait émettre du code HTML, y compris les balises HTML et BODY.

+0

Salut Jeffrey, Cela a fonctionné à merveille et j'ai réussi à obtenir la sortie désirée (l'utilisateur a été invité à télécharger le fichier .doc). Cependant, il semble que mon encodage soit complètement faux. Quand j'ouvre le document word (ou le change en un fichier .rtf), il semble qu'il ne peut pas reconnaître le contenu et me demande comment l'encoder. Une fois que j'ai sélectionné le codage (par exemple UTF-8), le fichier s'ouvre et le contenu est affiché correctement. Ceci est mon code: (suite) – N2EE

+0

commencent OWA_UTIL.MIME_HEADER ('Content-Type: application/vnd.ms mots; charset = utf-8', false); Htp.print ('Content-Disposition: attachment; nom_fichier = "test.doc"') OWA_UTIL.HTTP_HEADER_CLOSE; pour x dans (sélectionnez column_one, column_two from my_table) boucle htp.p (x.colonne_one || chr (10) || x.colonne_two || chr (10) || chr (10)); boucle d'extrémité; htmldb_application.g_unrecoverable_error: = true; fin; . . . . Une idée où je peux changer le mime_header pour ouvrir le fichier en toute transparence? Un grand merci – N2EE

+1

Vous trouverez probablement cela fonctionnera si vous envoyez la syntaxe HTML en tant que données. par exemple. 'begin OWA_UTIL.MIME_HEADER ('Content-Type: application/vnd.ms-word; jeu de caractères = utf-8', false); htp.print ('Content-Disposition: attachment, filename = "test.doc"'); OWA_UTIL.HTTP_HEADER_CLOSE; htp.p (''); pour x dans (sélectionnez column_one, column_two from my_table) boucle htp.p (x.column_one || '
' || x.column_two || '

'); boucle d'extrémité; htp.p (''); htmldb_application.g_unrecoverable_error: = true; fin; ' –