XBIFFの説明 EXCELや外部ライブラリ不要で、自力でEXCELファイルへの出力,読み込みを行 なうコンポーネントです。 ファイル出力クラスであるTWriteBiffとTWriteBiffをラップしたXBiffコンポー ネントから構成されており、XBiffではEXCELファイルの読み込みもサポートし ます。かなり機能が限定されたものではありますが、計測データを直接EXCEL ファイルに保存する等、使い道はあるかと思います。 なおEXCELファイルの読み込みは「おまけ機能」です。全てのEXCELファイルが 100%読込み出来る訳ではありません(一部のBIFF8ファイルでSST文字列が完全に 読込めない場合があります)。 TWriteBiffで書込んだデータの読み込み確認  EXCEL2000/Excel97 Viewerにて正常に読込み出来ることを確認しています。  OpenOffice.org Calcでは読み込み出来ますが、セル属性が無視される,日本  語の表示がおかしい,のふたつの問題があります。  ※Ver1.20から書込みフォーマットの正確性を上げるために、もっとも単純な   フォーマットであるBIFF2形式での書込みとしました。  ※BIFF2形式ファイルの拡張子は.XJSのようですが、.XLSとしても問題なく読   み込み出来るようです。 TWriteBiff  EXCEL出力クラスです。 EXCEL Ver2.1のBIFF2形式相当で書込みします。   1.単一のワークシートしか書込み出来ません。   2.セル内の文字列が数値かどうかによって、LABEL(文字列),整数,実数   (double)で書込む  3.セル属性の一部を指定可能  メソッド   Create(const FileName: string; MaxRow, MaxCol: integer)    TWriteBiffのコンストラクタです。    FileName: 出力先のファイル名(フルパスで指定)    MaxRow:  書込むシートの最大行+1    MaxCol:  書込むシートの最大桁+1   Free    出力の後処理を行なってファイルを閉じます。   WriteCell(Row, Col: integer; rgbAttr: DWORD; Data: string)    セルデータを書込みます。    Row, Col: セルの行と桁(0ベース指定です)    rgbAttr: セルの属性         属性を指定しない場合は0を指定して下さい。         指定出来る属性:()内は定数値         1)文字のアライメント          alLeft(1)   左寄せ          alCenter(2)  中央寄せ          alRight(3)   右寄せ          alFill(4)   両端揃え         2)罫線          bdLeft($08)  セルの左側に罫線          bdRight($10)  セルの右側に罫線          bdTop($20)   セルの上側に罫線          bdBottom($40) セルの下側に罫線         3)フォント属性          fBold($4000)  ボールド          fItalic($8000) イタリック          fUnderLine($C000) アンダーライン         1)3)はどれかひとつのみ指定出来ます         2)はorの組合わせで指定出来ます         1)2)3)はorの組合わせ指定出来ます    注:セルデータの書込みは、A1,B1,C1・・・A2,B2,C2・・・と行単位      で行なって下さい。   WriteRow(Row: integer; RowData: TStringList)    一行分まとめて書込みます。使いみちはないかも(^^;    Row, Col: セルの行と桁(0ベース指定です)    RowData: 一行分の文字列リスト   例)    var     WriteBiff: TWriteBiff;     i, j: integer;    begin     WriteBiff := TWriteBiff.Create('c:\test.xls', 10, 10);     for i := 0 to 9 do      for j := 0 to 9 do       //ボールド,中央寄せ+上下に罫線       WriteBiff.WriteCell(i, j, fBold or alCenter or bdTop or bdBottom, 'TEST');     WriteBiff.Free;    end; TXBiff  TWriteBiffをラップしたファイル出力と読み込み用の非ビジュアルコンポー  ネントです。  読込みはBIFF2〜8形式  1.複数のワークシートがある場合は全てのワークシートを読込みます  2.読込めるのは数値(整数,単精度実数,倍精度実数)とLABEL(文字列)及び    BIFF5形式のRSTRING(文字列)とBIFF8形式のSST文字列  3.セルの属性は無視  メソッド   LoadFile(const FileName:string)    EXCELファイルを読み込みます。    FileName: 読み込むファイル名(フルパスで指定)       SaveFile(const FileName:string; DataSet: TStringList)    EXCELファイルにデータを出力します。    FileName: 出力先のファイル名(フルパスで指定)    DataSet: 出力するデータ文字列         Strings[]には一行分のデータをカンマテキストでセット         します。         例)          DataSet.Add('1,2,3,4,5,6,7,8,9');  イベント   OnProgress(Sender: TObject; Progress: integer)    読み書きの進捗状況イベント    Progress=0〜100   OnReadCell(Sender: TObject; SheetNo, Row, Col, rbgAttr: integer;         Data: string; var Cancel: Boolean)    セルデータを読み込む毎に発生します。読込んだデータの処理は    このイベントの中で行ないます。    SheetName:シート名(BIFF5/8形式のみ)。    SheetNo: シートNo(1〜N)。    Row, Col: データの行,桁    rgbAttr: セルの属性    Data:   実際のデータ(数値,文字列に関らず文字列で渡される)    Cancel:  読み込みを中止する場合にTrueを指定します。    ※Ver1.20でCancelが追加されました。   OnReadColW(Sender: TObject; SheetNo, Col, Width: integer)    セル巾を読み込む毎に発生します。読込み時にセル巾も処理したい    場合に使用して下さい。    SheetNo: シートNo(1〜N)。    Col:    データの桁    Width:  セルの巾(9ポイントの文字サイズ時にWidthを64で割った         価が丁度のサイズになります。いくつで割るかは各自で         試して見て下さい。    ※BIFF3以降の形式で使用出来ます。   OnReadSheetName(Sender: TObject; SheetName: string)    シート名を読み込む毎に発生します。読込み時にシート名も処理した    い場合に使用して下さい。    SheetName:シート名。    ※BIFF5/8形式のみ使用出来ます。  サンプルについて   StringGridへのEXCELファイル読み込み,書込みのサンプルです。   複数シートの読み込み/表示が出来ます。表示は出来るだけExcelに似せ   るように姑息な手段を使っています。あまり良い見本とは言えません。   なお書込みは表示されているシートを単一のシートとして処理します。   Delhi3.1pro/Delphi7proで動作確認しています。  コンポーネントの登録方法   XBiff.pasを登録して下さい。詳しい登録方法は各自マニュアル等を参照   してください。   ※C++Bulider4でもこのコンポーネントが登録出来ることを確認していま    すが動作確認は行なっていません。動くとは思いますが...  参考文献   INSIDE EXCEL http://www.pleasuresky.co.jp/insidexl.php3    BIFF8形式を説明している。   MSDN    RKフォーマットの読込み。   BIFF.TXT    英文のBIFFフォーマットを説明した文献。    BIFF4迄のフォーマットについて解説した文献で、かなり参考になる。    以前Webで検索してたどりついたサイトからDLしたもので、残念ながら    そのURLは失念してしまった。   ExcelFileFormat.pdf    BIFFフォーマットの詳細解説資料。宝の宝庫です。掲示板への書込み    で存在を知りました。    http://sc.openoffice.org/ にあります。 著作権,使用条件  EXCELファイルへの出力,読み込み処理は作者が独自に開発したものであり、  その著作権はM&Iが留保していますが、これを主張しません。  ソースの一部もしくは全てを流用することを認めます。またその際に作者の  クレジットを含める必要はありません。自由にご使用ください。  フリーソフトです。私用,商用(ソフトを利益を得るための道具,手段とし  て使用すること)に関らず自由に使用することができます。但し、ソフトそ  のものを販売することによって利益を得る行為は禁止します。また商用で使  用する際には「作者のサポートを期待出来ない」事を前提にして下さい。  なお、ソフトを使用したことによって発生した、いかなる被害,損害に対し  ても作者はその責を負いません。  再配布は自由に行なうことができます。但し、再配布者,2次公開先の管理  者は、オリジナルがバージョンアップした際に更新作業を行なって下さい。  サポートはメールもしくは作者のホームページ上で行ないます。感想,要望  等については、次期バージョンアップの際の参考とさせていただいています。  ただし、全ての要望に答えることが出来ない場合があります。またバージョ  ンアップ作業は作者の仕事の都合や気分によって決まりますので、時期に  ついてのお約束は出来ません。 謝辞  BIFFファイルの情報を色々とご教授くださったイナガキケン氏に感謝いたし  ます。 XBiffの問題を指摘くださり更にはソースの修正まで行なって頂いた、高橋氏 とやまぐち氏に感謝いたします。 履歴  2004/5/26 Hiバイトが$00の全角文字列の読込みを1バイト文字として読込んで      いた不具合を修正。  2004/4/24 XBiff.pasのLoadExcel内SST文字列読込み処理を修正。 ひとつの文字列が複数のCONTINUEレコードをまたぐ場合、変換に 失敗する問題を修正。  2003/11/1 XBiff.pasのLoadExcel内SST文字列読込み処理を修正。       (修正まで行なって下さった、株式会社アルフの高橋氏に感謝し  ます。前回に引き続き多謝です。)  2003/6/12 XBiff.pasのLoadExcel内BOUNDSHEETの処理不具合を修正。       XWriteBiff.pasで4バイト整数値を正常に書き込めなかった不具       合を修正。  2003/4/1 XBiff.pasのLoadExcel内SSTのCONTINUEレコード処理方法を変更。       (ご指摘と修正内容まで提案して頂いた株式会社アルフの高橋氏        に感謝します)。  2002/10/17XWriteBiffでテキストがうまく保存されない不具合を修正。       XBiffに計算結果の読込み機能とセル幅読込み,シート名読込み       イベントを追加。       OnReadCellのrgbAttrの型をintegerに変更(Del5以降でサンプル       がコンパイルエラーになる対応)。       サンプルプログラムもシート名,セル幅反映に対応。  2002/9/16 書込みをBIFF2形式に変更。       一部のセル属性書込みに対応。       Integerが16bit以上の場合にエラーが発生した不具合を修正。       複数シートの読み込みに対応。  2002/9/2 入出力をTFileStreamからTOLEStreamに変更,SST読み込みに対応  2002/8/21 初版  Copyright 2002-2004 M&I  mailto:masahiro.inoue@nifty.ne.jp  http://homepage3.nifty.com/m-and-i/