«

»

Aug 22

Print this Post

Como eu retorno uma query de um arquivo Excel ?

NOTA: Para usar a solução abaixo, seu servidor ColdFusion deve permitir a voce criar objetos Java. Muitos hosts compartilhados não permitem isso.

JDBC ODBC do Java permite voce conectar-se a um arquivo Microsof Excel. Então, usando as classes SQL do Java, podemos ler esse arquivo e retornar certas tabelas ao objeto query do ColdFusion.

Esta função retorna o objeto query do ColdFusion, de modo que voce possa utilizar a metodologia “Query of Queries” e retornar os dados que voce necessita.

Uma possível localização para essa função seria dentro de um componente chamado MicrosoftUtil.cfc ou alguma coisa igualmente descritiva.


<cffunction name="getExcelSheet" access="public" output="false" returntype="query">
     <cfargument name="filename" required="true" type="string" />
     <cfargument name="sheetName" required="true" type="string" />
     <cfscript>
          var c = "";
          var stmnt = "";
          var rs = "";
          var sql = "Select * from [#sheetName#$]";
          var myQuery = "";
          arguments.filename = expandPath(arguments.filename);
          if(len(trim(arguments.filename)) and fileExists(arguments.filename)){
               try{
                    CreateObject("java","java.lang.Class").forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
                    c = CreateObject("java","java.sql.DriverManager").getConnection("jdbc:odbc:Driver={Microsoft Excel Driver (*.xls)};DBQ=" & arguments.filename );
                    stmnt = c.createStatement();
                    rs = stmnt.executeQuery(sql);
                    myQuery = CreateObject('java','coldfusion.sql.QueryTable').init(rs);
               }catch(any e){
                    // error-handling code
               }
          }
          return myQuery;
     </cfscript>
</cffunction>

To use the function simply use the following syntax:


getExcelSheet("myFile.xls","productsSheet")

Where myFile.xls is a relative path to your Excel file and productsSheet is the name of the sheet inside the Excel file that you would like to return.

by Kyle Hayes


Permanent link to this article: http://ensina.me/coldfusion/como-eu-retorno-uma-query-de-um-arquivo-excel/

Leave a Reply