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> 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