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




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.