De : Pharo-dev [mailto:pharo-dev-bounces@lists.pharo.org] De la part de Markus Fritsche Envoyé : lundi 8 décembre 2014 19:26 à : Pharo Development List Objet : Re: [Pharo-dev] Excel binding Replies inline On 08.12.2014 17:07, Blondeau Vincent wrote: De : Pharo-dev [mailto:pharo-dev-bounces@lists.pharo.org] De la part de Esteban A. Maringolo Envoyé : lundi 8 décembre 2014 16:01 à : Pharo Development List Objet : Re: [Pharo-dev] Excel binding El Mon Dec 08 2014 at 11:41:23 AM, Markus Fritsche <mfritsche@reauktion.de<mailto:mfritsche@reauktion.de>> escribió: On 2014-12-08 15:22, Blondeau Vincent wrote:
Does someone know if there is a mean to access Excel sheets from Pharo to get data?
I don't want to use .csv files but .xls/.xlsx files.
If you're just going to use .xlsx files, it might be possible to unzip the file and peek the xml representation of that table (not that I've done it though). By unzip the file you actually see the xml, but I will complicated to use the values of the formula cells and to differentiate the sheets... Yup - I don't know the excel xml format, just remembered that it might be an option... If you're going to support .xls / Excel < 2003 files, you will probably need a COM-bridge. I remember that I've seen it for Squeak in the past, I don't recall having seen it for Pharo. It is only Excel > 2003. Another kind of hackish solution could be setting up an ODBC driver for Excel files and then using DBXTalk/ODBC or the ConfigurationOfODBC-based package. I have tried. But when I launch the DBXTalk tests it asked me to choose a DBXODBX*Facility... Which one should I choose? here is how I connect to an access database on windows: execute once per session: OpenDBX current: NBPharoOpenDBX new. then (access): | aRow conn settings result | settings := DBXConnectionSettings host: '<dsn name>' port: '' database: '<database filename>' userName: '' userPassword: ''. conn := ((DBXConnection new settings: settings) platform: DBXOdbcBackend new) connect. conn open. result := conn execute: 'SELECT * FROM <table name>'. aRow := result nextRow. [ aRow notNil ] whileTrue: [ aRow values do: [ :value | Transcript show: value; show: $; ]. Transcript cr. aRow := result nextRow ]. conn close. Everything in <> brackets needs to be replaced by actual values. Also, the ODBC backend doesn't support many types => which will probably break too :-( And you will need libopendbx-1.dll, libopendbxplus-1.dll and opendbx\libodbcbackend-1.dll in your image directory. That all being said - before I'll dive into that, I would probably just whip up a vba script to convert the excel tables to text files in bulk. Thanks. Should I install some plugins? And in ConfigurationOfODBC there is no tests and doc so I don't know how to launch it... I think there are tests in the monticello repository next to the ODBC package (there's probably a script command to install them, but I am usually faster just installing the package from Monticello manually). Nope⦠Unfortunally there is nothing in http://smalltalkhub.com/mc/PharoExtras/ODBC/main ⦠ODBC seems actually not be a good solution. I have to create one ODBC connection by Excel file and I have many of them⦠I thinks that in my case OLE seems better. Regards, Vincent Kind regards Markus ________________________________ Ce message et les pièces jointes sont confidentiels et réservés à l'usage exclusif de ses destinataires. Il peut également être protégé par le secret professionnel. Si vous recevez ce message par erreur, merci d'en avertir immédiatement l'expéditeur et de le détruire. L'intégrité du message ne pouvant être assurée sur Internet, la responsabilité de Worldline ne pourra être recherchée quant au contenu de ce message. Bien que les meilleurs efforts soient faits pour maintenir cette transmission exempte de tout virus, l'expéditeur ne donne aucune garantie à cet égard et sa responsabilité ne saurait être recherchée pour tout dommage résultant d'un virus transmis. This e-mail and the documents attached are confidential and intended solely for the addressee; it may also be privileged. If you receive this e-mail in error, please notify the sender immediately and destroy it. As its integrity cannot be secured on the Internet, the Worldline liability cannot be triggered for the message content. Although the sender endeavours to maintain a computer virus-free network, the sender does not warrant that this transmission is virus-free and will not be liable for any damages resulting from any virus transmitted.