Writing in Excel file format

I have a customer who would like my export file to be written directly to an xls file.  Please don't suggest a csv file.  Do you think this is possible from unix?
Who is Participating?
marcjbConnect With a Mentor Commented:
thx :)
I don't think :(
this question was dicussed in the MFC,Windows or C++ area ... and as far as I remember the xls format can only be read and generated by excel (crypted with nonpublic key).
On windows you can use OLE to write data in an empty excel sheet... but on unix ...?
If you write your export file using specific delimiters (as tab or :) then you can import your file in excel and create the sheet (if it is a table or something like this). When you start excel you will be asked for how to import th file. No automatic open may be performed.
Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

with excel, a special crossing format is the silk format:
check for it under excel to know the necessary structure of data

sosedadaAuthor Commented:
alextr, that sounds a lot like a comma separated value (csv) file :)

bedot, could you elaborate?
One solution:
create dbf (dBASE) files ( format spec can be found at http://www.programmersheaven.com/zone18/cat187/2574.htm )
Excel can read/write in that format.
sosedadaAuthor Commented:

I'm going to have to reject your answer because I want to write directly to excel file format (xls).  Thanks for the info.  If you can verify that it is not possible answer again with the info and I will accept it.



I'm using a setup where I actually talk to a Windows-NT system running Excel. I use a perl-script to talk to a server on the Windows machine. The server on the Windows machine "knows" how to talk to Excel via OLE (Win32::OLE module). The content gets created on Unix, sent on to the Windows-NT-server, Excel creates the data, saves the file and the result is shipped back to Unix.
Of course this requires access to a Windows machine.

As far as I know there is no way to write XLS-files directly on Unix.

>> As far as I know there is no way to write XLS-files directly on Unix
Thats what I think ... I'm not 100% sure but 99.4876% ;)

I think it is possible from UNIX.  A while back I put something together that took comma seperated text files and created Excel files (I think it was Excel 2.0).  You just need to know the Excel file format.  Check out:


I am 100% sure that there is not way to read/write xls files in UNIX, microsoft made it clear, in various articles that the only way people would be allowed to use there format was through com, I suppose that one thing you could try however is this. It is possible to run MSOffice on linux(and I assume with other UNIX versions) and there are some porting libs out there that emulate com. This might work, however all your users would have to have msoffice installed. Sorry.


here a part of french help of excel that i found with in the option search of the word SYLK on the help of excel:
several commonj formats are recognized

Convertisseurs de format de fichier fournis avec Microsoft Excel

Les formats de fichier répertoriés dans la boîte de dialogue Enregistrer sous varient en fonction du document actif, s'il s'agit d'une feuille de calcul, d'une feuille graphique ou de tout autre type de feuille. Pour la plupart des formats de fichier, Microsoft Excel convertit uniquement la feuille active. Pour convertir les autres feuilles, activez chaque feuille et enregistrez-les séparément.
Microsoft Excel dispose de la plupart des convertisseurs de fichiers dont vous pouvez avoir besoin. Si le format de fichier souhaité ne s'affiche pas dans les boîtes de dialogue Ouvrir et Enregistrer sous (menu Fichier), vous pouvez installer un convertisseur. Pour plus d'informations, cliquez sur  .

Formats Microsoft Excel

Le format de classeur Microsoft Excel 97 & 5.0/95 enregistre les classeurs aux formats Microsoft Excel 97 et Microsoft Excel versions 5.0/95 dans le même fichier .xls. Les utilisateurs de Microsoft Excel 97 peuvent continuer à travailler dans le classeur et utiliser toutes les fonctionnalités et les mises en forme uniquement disponibles avec cette version. Les utilisateurs de Microsoft Excel version 5.0 ou Microsoft Excel 95 peuvent ouvrir et utiliser le classeur sans devoir le convertir. Il est recommandé d'utiliser le classeur en lecture seule. Si les utilisateurs enregistrent le classeur dans une version antérieure de Microsoft Excel, les fonctionnalités et les mises en forme propres à Microsoft Excel 97 seront perdues. Pour plus d'informations, cliquez sur  .

Formats du classeur entier      Extension de fichier
(Windows uniquement)
Classeur Microsoft Excel (Microsoft Excel 97)      .xls
Modèle (Microsoft Excel 97)      .xlt
Environnements (Microsoft Excel 97)      .xlw
Classeur Microsoft Excel 97 & 5.0/95       .xls
Classeur Microsoft Excel 5.0/95       .xls
Classeur Microsoft Excel version 4.0
(enregistre uniquement les feuilles de calcul, les feuilles graphiques et les feuilles macro)      .xlw
Formats de la feuille active      
Formats de feuille Microsoft Excel version 4.0
(y compris les feuilles macro Microsoft Excel ou international)      .xls, .xlc, .xlm
Formats Microsoft Excel version 3.0       .xls, .xlc, .xlm
Formats Microsoft Excel version 2.x       .xls, .xlc, .xlm
Formats de fichier pour Lotus 1-2-3

Lorsque vous ouvrez un fichier .wk1 ou .wk3 dans Microsoft Excel, Microsoft Excel applique la mise en forme des fichiers .fmt, .fm3 ou .all associés. Si vous enregistrez un fichier Lotus 1-2-3 au format Microsoft Excel, Microsoft Excel enregistre les données et la mise en forme dans un classeur unique.
Les enregistrements aux formats WK1 (1-2-3) (*.wk1) et WK3 (1-2-3) (*.wk3) ne conservent qu'une partie de la mise en forme. Pour enregistrer un classeur Microsoft Excel au format Lotus 1-2-3 et conserver des bordures, des ombrages de cellule, des polices et autres mises en forme, sélectionnez un format de fichier Lotus 1-2-3 qui conserve les mises en forme dans un fichier .fmt, .fm3 ou .all séparé.

Format de fichier Lotus 1-2-3       Version      Remarques
WK4 (*.wk4)      4.0      Enregistre l'intégralité du classeur
WK3 (*.wk3)
WK3, FM3 (*.wk3)      3.x et Lotus 1-2-3/W      Enregistre uniquement les feuilles de calcul et les feuilles graphiques
WK1 (*.wk1)
WK1 (FMT) (*.wk1)
WK1 (ALL) (*.wk1)      2.x      Enregistre uniquement la feuille active
WKS (FMT) (*.wks)      1.0 et 1.0A      Enregistre uniquement la feuille active
.pic (inclus dans un fichier .all)      3.x et Lotus 1-2-3/W      Ouvre mais n'enregistre pas ce format
Formats de fichier texte

Vous pouvez ouvrir et enregistrer des fichiers dans les formats texte suivants. Si vous enregistrez un classeur en format texte, toute la mise en forme est perdue.

Format      Remarques
Texte (séparateur : espace) (*.prn)      Format séparé par des espaces de Lotus. Enregistre uniquement la feuille active.
Texte (séparateur : tabulation) (*.txt) (Windows)
Texte (Macintosh)
Texte (OS/2 ou MS-DOS)CSV (séparateur : virgule) (*.csv) (Windows)
CSV (Macintosh)
CSV (OS/2 ou MS-DOS)      Si vous enregistrez un classeur sous la forme d'un fichier séparé par des espaces ou des tabulations pour une utilisation avec un autre système d'exploitation, sélectionnez le convertisseur approprié afin que les tabulations, sauts de page et autres caractères soient interprétés correctement. Enregistre uniquement la feuille active.
DIF (*.dif)      Enregistre uniquement la feuille active.
SYLK (*.slk)      Enregistre uniquement la feuille active.
Autres tableurs et questionnaires de bases de données

Format      Programmes      Remarques
DBF 2, DBF 3,
DBF 4 (*.dbf)      dBASE II, III et IV      Ouvre et enregistre uniquement la feuille de calcul active.
WQ1 (*.wq1)      QuattroPro pour MS-DOS      Ouvre et enregistre uniquement la feuille de calcul active.
.wb1      QuattroPro version 5.0 pour Windows      Ouverture uniquement.
.wks      Microsoft Works version 2.0 pour Windows et Microsoft Works pour MS-DOS      Ouvre uniquement les feuilles de calcul Microsoft Works version 2.0 pour Windows ou Microsoft Works pour MS-DOS.
Formats du Presse-papiers

Vous pouvez coller les formats de Presse-papiers suivants dans Microsoft Excel à l'aide de la commande Coller ou Collage spécial du menu Edition.

Format      identificateurs des types de Presse-papiers
Picture       Picture (Windows enhanced metafile, EMF)Remarque   Si vous copiez des images Windows metafile (WMF) à partir d'un autre programme, Microsoft Excel colle l'élément sous la forme d'une image EMF (enhanced metafile format).
Bitmap       Bitmap (BMP)
Formats de fichier Microsoft Excel      Formats de fichier binaire pour Microsoft Excel versions 3.0, 4.0, 5.0/95, et Microsoft Excel 97(BIFF, BIFF3, BIFF4, BIFF5 et BIFF8)
Symbolic link format       SYLK
Format Lotus 1-2-3 version 2.x       .wk1
Data interchange format       .dif
Format Texte (séparateur : tabulation)       Text
Format de valeurs séparées par un point-virgule      .csv
Texte mis en forme (uniquement dans Microsoft Excel)      Rich Text Format (RTF)
Objet incorporé      Objets Microsoft Excel, objets provenant de programmes correctement inscrits qui prennent en charge OLE 2.0 (OwnerLink), ainsi que Picture ou d'autres formats de présentation
Objet lié      OwnerLink, ObjectLink, Link, Picture ou d'autres formats
Objet dessiné Office       Format d'objet dessiné Office ou Picture (Windows enhanced metafile format, EMF)
Texte      Display Text, OEM Text
laeuchli is somewhat incorrect.  Micros**t can say whatever it wants, but if you know the file format, there is no reason why you can't write your own application to read/write the format.
I'v seen the excel file format described in the
"Dr. Dobb's Essential Book On File Formats"
It's a CD, so try to find it.


sosedadaAuthor Commented:

I'm afraid you are wrong.  There have been a few right-ish answers and I no longer need to do this.  But the first answer which told me what I wanted was from marcjb, so if you want to answer, I will award you the points.
All Courses

From novice to tech pro — start learning today.