PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
16475 01/10/16 21:16:48 RE(8):Excelファイルについて By ryochan
16466 01/10/15 10:17:36 RE(7):PB5.0.04: saveas関数でexcelに出力した際に文字列が切れる By t_inoue
16463 01/10/13 03:07:02 RE(6):PB5.0.04: saveas関数でexcelに出力した際に文字列が切れる By Taka
16462 01/10/12 20:14:59 RE(5):PB5.0.04: saveas関数でexcelに出力した際に文字列が切れる By M.M
16460 01/10/12 14:53:58 RE(4):PB5.0.04: saveas関数でexcelに出力した際に文字列が切れる By t_inoue
16458 01/10/12 12:52:07 RE(3):PB5.0.04: saveas関数でexcelに出力した際に文字列が切れる By Potato
16457 01/10/12 11:46:03 RE(2):PB5.0.04: saveas関数でexcelに出力した際に文字列が切れる By t_inoue
16456 01/10/12 09:14:28 RE(1):PB5.0.04: saveas関数でexcelに出力した際に文字列が切れる By Potato
16455 01/10/11 17:59:06 PB5.0.04: saveas関数でexcelに出力した際に文字列が切れる By t_inoue

カテゴリ:PowerBuilderの開発環境
日付:2001年10月16日 21:16 発信者:ryochan
題名:RE(8):Excelファイルについて

Takaさん、皆さん、こんばんは。

>Excelをインストールしていない環境でも SaveAs(Excel!) は可能です。
>少なくともExcelのモジュールは使っていないはずです。
>(Windows自体にそういったAPI等があれば別ですけど、私は見たことないです)
・・・
>Excel形式の内部フォーマットは、各データごとにその桁数情報も同時に格納されています。
>この情報は1バイトだけで表現されており、その最大値は16進で\'FF\' つまり10進で255になります。

ほじくり返してすみません。
ExcelファイルはBIFFと呼ばれるファイルフォーマットで
作成されています。
(しかし、そのフォーマット形式において、セルデータ長情報については
WORD(2バイト)で構成されているみたいです。
但し、このスレッドにも言われているように、MAX値は255らしいです。
また、BIFF8(97,2k)のSSTレコードと呼ばれる文字数は
その文字列数はDWORD(4バイト)になった(しかしMAX32000)。)

http://www.pleasuresky.co.jp/insidexl.php3
に詳しいことが載っています。

また、Exelファイルから直接読み込むというのも
Delphiのソースですが
http://member.nifty.ne.jp/m-and-i/tips/excelfile.htm
で紹介されています。
これも結構参考になると思います。
PBでもExcelファイルデータをBlob変数に格納して、各レコード情報データを
10進数で扱えば移植でき、直接アクセス可能だと思います。
私も途中まで移植したのですが。。。また逆を行えば書き込みできるのか
は分かりません。できればBIFF8のフォーマット(97、2k)も作成できますね。

しかし書込に関しても、現にPerlではSpreadsheet::WriteExcelというモジュール
により、Linux上でもExcelファイルを作成することが可能と
なっています(これはBIFF7.0で作成されます)。

Takaさんの意見と重複しますが、データのみ
(フォント情報等は除くということ)
扱うのであれば、Excelファイルはやろうと思えば、
開発者レベルで自力で読み書きできることを少々補足として
書いておきます。


付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS Windows98
DBMS (記載なし)
Browser (記載なし)

Server SoftWare

OS Windows NT 4.0
DBMS Oracle 7.3
WebServer (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.