losLab ソフトウェア開発ブログ

HotXLS Delphi Component

Software Development Blog

HotXLS Delphi Component

改ざん検出:HotXLSのAgile dataIntegrity HMAC

HotXLSでDelphiからAgile暗号化XLSXパッケージを検証し、HMAC-SHA-512のdataIntegrity、定数時間の照合チェック、クラシックな書き込み予約レコードも扱う

HotXLS Delphi Component

HotXLSにおけるアンカー付き条件付き書式の分割

行や列の編集がルールの適用範囲を分断したとき、HotXLSがDelphiで条件付き書式とデータ検証ルールをどのように優先度付きのルールオブジェクト群へ分割するのかを、詳しく解説する

HotXLS Delphi Component

Delphi XLS writerのBIFF record length drift

HotXLSのPivotTable emitterがBIFF bodyを24 byteと宣言して26 byteを書いたためchart sheetが消えました。原因と自分で見つける方法を解説します

HotXLS Delphi Component

DelphiでBIFF SupBookとXTI外部リンクを分類する

HotXLSがDelphiでBIFF SupBookレコードとXTIを分類する方法を解説。セルフフラグや空URLから同じシート参照、アドイン、DDE、OLEの各リンクを推測できない理由と、7種類の閉じた列挙型による型付き分類を紹介します

HotXLS Delphi Component

DelphiのHotXLSでBIFF8 secondary axis group

HotXLSがDelphiでBIFF8のsecondary axis groupを書き出す方法を解説します。AXESUSED、2つのAxisParent block、chart groupのnestingを扱います

HotXLS Delphi Component

HotXLSでワークシートにチャートオブジェクトを埋め込む

HotXLSはBIFF8のチャートサブストリームを、OBJタイプ5のホストコントロールとしてワークシートにアンカーします。チャートは専用シートではなくデータの隣に座り、系列参照の受け付け範囲やXLUnicodeStringの落とし穴も解説します

HotXLS Delphi Component

DelphiのBIFF8 XLUnicodeString:cchとfHigh

HotXLSがDelphiでBIFF8 XLUnicodeStringをdecodeする規則を説明します。GetWideStringはbyteを数え、fHigh 0ではGetStringを使います

HotXLS Delphi Component

HotXLS で信頼できない EMF と WMF を安全に再生する

HotXLS はワークシートのメタファイル画像を GDI 再生へ渡す代わりに、上限付きのコマンドシーンへデコードします。予算定数、フェイルクローズの解析、レンダリングだけに限定される拒否の設計を解説します

HotXLS Delphi Component

Delphiで再計算せずExcelの数式キャッシュ値を読む

HotXLSがDelphiでExcel数式のキャッシュ値を再計算なしで読む方法を解説。ETLの実行を高速に保ち、ソースブックをバイト単位で無変更のままにする、State、Kind、Valueの3事実の分離も紹介します

HotXLS Delphi Component

DelphiでCF_HTMLクリップボード形式を実装する

HotXLSを使ってDelphiでCF_HTMLクリップボードペイロードを構築し、正確なバイトオフセットを使ってExcelの範囲をスタイルを保ったままWordやブラウザに貼り付けられるようにする

HotXLS Delphi Component

DelphiでExcel列幅とMax Digit Widthを正しく扱う

Excelの列幅はMax Digit Width単位で測られるため、Calibri以外のNormalフォントですべての列境界がずれます。HotXLSがDelphiでGDIによりMDWを実測し、ページネーションの寸法狂いを防ぐ仕組みを解説します

HotXLS Delphi Component

COM IStorageなしでDelphiからOLE2複合ファイルを読む

HotXLSが純粋なPascalでCompound File Binary v3コンテナを解析する仕組み:ヘッダーの署名、ヘッダー内DIFAT、FATチェーン、MiniFAT、ディレクトリツリーをole32.dllなしで扱う DelphiとC++Builder向けのHotXLS Excel

HotXLS Delphi Component

HotXLSによるDelphiでのExcel条件付き書式評価

HotXLSがDelphiでExcelの外からExcel条件付き書式ルールを評価する方法、そしてExcel 16でのテストにより固定されたTop 10パーセント、平均以上、重複のケース

HotXLS Delphi Component

Delphi cross-compiler matrix:XE5以降のHotXLS

Delphi XE5だけで発生する5つのcompiler rejectionと、最新compilerだけを実行するbuild scriptがHotXLS matrixを静かに壊した理由を説明します

HotXLS Delphi Component

Delphiにおける HotXLS のワークブック間コピーと数式再バインド

HotXLSのAddCopyがDelphiでExcelワークシートをワークブック間コピーし、数式・チャート参照・フォントインデックスを目的地ワークブック用に再バインドする仕組み HotXLSの メソッドは、あるExcelワークブックのワークシートを別のワークブックへコピーする際、コンパイル済みの数式ツリーを直接コピーす

HotXLS Delphi Component

HotXLSによるDelphiでのライブなブック間数式

HotXLSはDelphiにおいて、別のワークブックを参照する数式を古いキャッシュ値ではなくメモリ上のライブなオブジェクトに対して評価し、未登録の場合は外部リンクキャッシュにフォールバックする

HotXLS Delphi Component

DelphiにおけるExcelの日付シリアル値:1900年 vs 1904年とnumFmt

Excelの日付は、どの基準日(エポック)からカウントされるかがわかるまでは単なる数値です。。1900年と1904年のシステムが1462日異なる理由と日付フォーマットの判定について解説します スプレッドシートを開き、 と表示されているセルをクリックすると、数式バーは日付のままで読み取られます

HotXLS Delphi Component

HotXLSのDeep RecalcでExcel数式キャッシュを監査

HotXLSは隔離オーバーレイで全数式を再計算し、キャッシュ済み値と食い違うセルを1つずつ報告します。ApplyResultsを明示的に要求しない限り、ワークブックへの書き込みは一切行いません

HotXLS Delphi Component

DelphiでのHotXLS数式エンジンとカスタム関数

HotXLSを使用してDelphiでExcel数式を評価する方法:Calculateエンジン、OnUserFunctionカスタム関数、配列数式、およびCSV出力で計算値が必要な理由について解説

HotXLS Delphi Component

HotXLSで行を挿入した際の数式参照の調整

DelphiでXLSXの行や列を挿入・削除する際、HotXLSが相対参照・絶対参照・範囲参照などのA1数式参照を自動でシフトし、削除領域への参照を#REF!に変換する仕組みを解説する

HotXLS Delphi Component

HotXLSをFree Pascal/Lazarusへ移植する4つの決定

HotXLSのWindows向けFree Pascal移植を支えるのは4つの決定です。コアをDELPHIUNICODEで維持し、OLE構造化ストレージをCORBAインターフェースで宣言し、Win32用AESオブジェクトをPascal実装に置き換え、切り詰められたZIPを受け付けるinflateループを修正しました

HotXLS Delphi Component

DelphiのExcel chart theme color:GelFrame

HotXLSがbinary XLSへtheme-colored chart fillを書き込む方法を解説します。GelFrame、red byte内のOfficeArt scheme index、MSOTINT payloadを扱います

HotXLS Delphi Component

HotXLSでGIF、BMP、JPEGヘッダのジオメトリを読む

HotXLSはGIF、BMP、JPEGの各ヘッダから実際のピクセル寸法を読み出し、画像を引き伸ばす100×100のフォールバックではなく、AddPictureが本物のジオメトリを書けるようにします

HotXLS Delphi Component

DelphiでのHotXLSインクリメンタル数式再計算

HotXLSのWorkbook.Recalculateが数式依存関係グラフを構築し、ダーティなセルだけを再計算する仕組みを解説する:揮発性関数、トポロジカル順序、循環参照の検出を扱う

HotXLS Delphi Component

Delphiで循環参照を反復計算により解く

HotXLSを使いDelphiで意図した循環参照を解決します。Iterate、IterateCount、IterateDeltaによる反復計算と、循環がどう収束するかを解説します

HotXLS Delphi Component

LAMBDAとLETをDelphiで:HotXLSの数式クロージャ

HotXLSでDelphiからExcelのLAMBDAクロージャと完全なLETセマンティクスを評価し、名前付きラムダ、レキシカルキャプチャ、シャドーイング規則、カンマ区切りにも対応する

HotXLS Delphi Component

HotXLS の Lookup スキャンと偽の循環参照

自分自身を含む列を検索範囲とする VLOOKUP が Excel で合法である理由と、HotXLS がスキャンエッジを順序付けエッジから分離して偽の循環参照を止める仕組みを解説します

HotXLS Delphi Component

HotXLSのPivotCacheサブストリームとSXDBレコード解釈

HotXLSはレコード番号ではなくレコード本体からPivotCacheサブストリームのフレーミングを判定します。SXStreamID、SXDBヘッダー、ストリーム名の3か所一致、SXDBBの先頭長による方言の決定、無損失の書き換え条件まで解説します

HotXLS Delphi Component

DelphiでXLS、XLSX、ODS、CSVを1つのプル行カーソルで読む

HotXLSがDelphiでXLS、XLSX、ODS、CSVのストリーミング読み取りを1つのプル行カーソルへ統合する方法を解説。明示的な6状態マシン、冪等なCancel、コピーなしの行ビュー、PeakRowBufferedBytesまで扱います

HotXLS Delphi Component

DelphiでのHotXLSを使用したR1C1数式表記

HotXLSを使用してDelphiでR1C1数式をコンパイルする方法:セルごとに R2C3、R[-1]C[2]、RC などを解決する GetCompiledFormulaR1C1 により、1つの相対数式で列全体に入力可能 HotXLSは、 を介して、R1C1参照表記で記述された数式をコンパイルします

HotXLS Delphi Component

DelphiでのExcelスパークライン:HotXLSとx14拡張

HotXLSを使用してDelphiでExcelスパークライン(折れ線、柱、勝敗)を作成する方法:ARGBカラースロット、およびExcel 2010以降が描画するx14 extLst拡張ブロックについて解説

HotXLS Delphi Component

DelphiのExcel統計関数:NORM・CHISQ・BETA

ExcelのNORM、CHISQ、BETA関数の裏には本物の数値解析があります。HotXLSがDelphiで正則化ガンマと正則化ベータを使ってこれらを計算する方法と、裾に潜んでいた対数のバグを解説します

HotXLS Delphi Component

Delphiで100万行のXLSXを定数メモリで書き込む

巨大なXLSXの生成は行数に比例して増加するべきではありません。DelphiでHotXLSがインライン文字列を使用し、共有文字列テーブルなしでOOXMLをどのようにストリーミングするかをご覧ください

HotXLS Delphi Component

HotXLSにおけるブール結果の代わりの構造化診断

HotXLSはブール型のSaveとOpenの結果を構造化診断に置き換える仕組みを解説する:安定したエラーコード、重大度レベル、そしてDelphiアプリ向けのシート単位コンテキストを扱う

HotXLS Delphi Component

HotXLSにおけるDelphiのSUBTOTALとAGGREGATEの隠し行

v2.197.0以前のHotXLSでSUBTOTAL 109と109が同じ合計を返す理由と、行の非表示状態を問い合わせるコールバックがDelphiでAGGREGATEの隠し行を修正する仕組みを解説する

HotXLS Delphi Component

HotXLS:DelphiでVBAマクロと外部リンクを保持する

DelphiのコードでXLSやXLSXのワークブックを編集するときに、HotXLSがVBAプロジェクトと外部リンクをどう保持するかを解説します。マクロ有効での保存、リンク先、ラウンドトリップの限界を扱います

HotXLS Delphi Component

DelphiでVBAソースを書き換えMS-OVBAを再圧縮する

HotXLSはDelphi開発者がVBAモジュールのソースコードを書き換え、MS-OVBAアルゴリズムで再圧縮したうえで、そのマクロをXLSまたはXLSMファイルへ書き戻せるようにする

HotXLS Delphi Component

HotXLSでDelphiからExcelの文書プロパティを設定する

HotXLSを使ってDelphiからExcelの文書プロパティを設定し、読み取る方法です。タイトル、作成者、会社、キーワードを、BIFFのSummaryInformationとOOXMLのdocPropsパートにまたがって扱います

HotXLS Delphi Component

HotXLSの読み取りリースと書き込みガード(Delphi)

HotXLSがDelphiでO(1)の読み取りリース、フェイルファストな書き込みガード、再入可能なトランザクション、世代カウンタによりブックの読み書きを調整する方法を解説。衝突は待たせず即座に失敗させます

HotXLS Delphi Component

DelphiパーサーにおけるXLSX OPCリレーションシップ解決

xl/worksheets/sheet1.xmlをハードコードすることが有効なXLSXファイルを壊す理由と、HotXLSがDelphiでOPCリレーションシップのターゲットをソースパートに対して解決する仕組み 有効なxlsxが を含んでいなければならないという決まりはない。DelphiとC++Builder向けのネイテ

HotXLS Delphi Component

DelphiにおけるXLSX共有数式のsi展開:落とし穴

HotXLSがDelphiでXLSX共有数式のフォロワーを展開する仕組み:siのマスターを見つけ、相対参照をシフトし、自己終端f要素を生き延びる方法を解説 XLSXの共有数式のフォロワーは数式のテキストを一切運ばない。その 要素はシート内の別の場所にあるマスターセルを指しており、リーダーはマスターの数式を行と列の差分だ

HotXLS Delphi Component

HotXLSを使用してDelphiでXLSXワークシートを複製する

HotXLSのDuplicateおよびCopyFromを使用してDelphiでスタイル設定されたXLSXワークシートをクローン:ディープコピーされる内容、シャローコピーにとどまる内容、および複製先でグラフを再構築する方法について解説します 1枚のワークシートを完璧に作り上げたとします

HotXLS Delphi Component

Delphiにおける並行ZIP Inflate: HotXLSリードゲート

HotXLSがDelphiで1つの共有ZIPパッケージストリームから多数のXLSXワークシートを並行に伸長する方法を解説する:seekとreadのペアだけをロックするリードゲートを扱う