.XLSXファイルの分析:文字列値、セルレイアウト

それで、会話を続けます。 念のため、最初はここにあることを明確にします



文字列値とその格納方法については、最初の部分で渡すことで既に言及しましたが、ここでさらに詳しく説明します。 文字列データで満たされたテーブルがあり、それが大きいと想像してください。 さらに、その中のすべての値が一意になることはほとんどありません。 それらのいくつかは、いいえ、いいえ、はい、テーブルの異なる部分のどこかに繰り返されます。 このような配列を「そのまま」シートのXMLマークアップ内に保存することは、PCリソースの観点からは非合理的です。 したがって、すべての文字列値は個別のファイル%file%/ xl / sharedStrings.xmlに移動されます。 興味のある部分は、たとえば次のようになります。



<sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="4" uniqueCount="3"> <si><t></t></si> <si><t></t></si> <si><t></t></si> </sst>
      
      





<sst />タグの「count」と「uniqueCount」の属性に注意してください。値は異なります。 実際、この本では、1行を2回使用しました。 同時に、属性はオプションです。つまり、属性を削除した場合、Excelはエラーを表示しませんが、ファイルを保存するときに再度描画します。



ここで、<si />タグ内で、フォント設定を試すことができます。 これを行うには、MS Wordで使用されているファイル変更マイレージシステムを使用します(後で説明します)。 次のようになります。



  <si> <r> <t xml:space="preserve"> </t> </r> <r> <rPr> <b/> </rPr> <t></t> </r> <r> <rPr> <sz val="18"/> </rPr> <t xml:space="preserve"> </t> </r> </si>
      
      





注:前の例のルート<si />タグには、テキストを含む<t />タグが直接埋め込まれていました。 ここでは、<r />タグ、つまりRunでラップされています。 ロシア語では「マイレージ」と呼ばれるのが慣習です。 簡単に言えば、マイレージは、同じスタイル設定を持つテキストです。



この例では、文字列値には3回の実行が含まれています。 それらを考慮することをより便利にするために、私は、おそらく、それらを別々の悲しみにします。



最初のもの:



 <r> <t xml:space="preserve"> </t> </r>
      
      





この実行には<rPr />セクションが含まれていないため、実行されるセルのスタイル設定が使用されます。 もう1つ興味深いのは、属性xml:space = "preserve"です。 事実、デフォルトでは、ExcelとWordはすべての実行から末尾のスペースを切り捨てます。 この場合、実行のジャンクションで、常に次のようなものを取得する必要があるように見えます: Vasya Petya 。 しかし、同じMS Wordと通信した経験から、そうではないことがわかります。 何のため? これは、xml:space = "preserve"が原因です。



第二:



 <r> <rPr> <b/> </rPr> <t></t> </r>
      
      





xmlはありません:space = "preserve"属性。 Excelが末尾のスペースを処理することは重要ではありませんが、末尾のスペースはありません。 しかし、ブロック<rPr />があります。 原則として、Excelにのみ存在するフォント設定を配置できます。 例の範囲を膨らませないように1つだけ行いました。



第三:



 <r> <rPr> <sz val="18"/> </rPr> <t xml:space="preserve"> </t> </r>
      
      





そして、ここにはフォント設定のブロックがあり、末尾のスペースを保存します。



さて、短い発言。 セルに複数行のレコードを作成する必要がある場合、この行には通常のキャリーシンボルchr(10)があります。 セルの複数行属性自体は、シートレイアウトファイルにあります。 単一行のセルでは、ハイフンは無視されます。 Excelは単純にふりをします。



%file%/ xl / worksheetsフォルダーに移動します。 ここで、前述のように、ブックに含まれる各シートは.xmlファイルで表されます。



シートレイアウトファイルには、次の重要な要素が含まれています(そして、重要なことに、これらの要素をこの順序で配置することをお勧めします)。



1. <dimension>タグ 。 オプション。 私が理解できる限り、システムに占有領域のサイズ、つまり行と列をどれだけ描画するかを示すのに役立ちます



2. </ sheetViews>タグ。 オプションですが、時には便利です。 一番上の行を固定する必要があることを示すために使用しました。これは大規模なレポートに役立ちます。 次のようになります。



 <sheetViews> <sheetView tabSelected="1" workbookViewId="0"> <pane ySplit="1" topLeftCell="A2" activePane="bottomRight" state="frozen"/> </sheetView> </sheetViews>
      
      





ここで説明が必要です。 実際のラインピンは<pane />タグです。 そして、ここで使用される属性は次のとおりです。





3. <sheetFormatPr />タグ。 例:



 <sheetFormatPr defaultRowHeight="15" x14ac:dyDescent="0.25"/>
      
      





主にdefaultRowHeight属性、つまりデフォルトの列の高さに関心があります。 私たちになじみのある標準オプション-15ドル たとえば、30 cuを割り当てると、高さが個別に指定されていない行は2倍になります。 ただし、デフォルト以外の値を適用するには、値「true」でcustomHeight属性を指定する必要があります。 次のようになります。



 <sheetFormatPr defaultRowHeight="30" customHeight="true" x14ac:dyDescent="0.25"/>
      
      





4.タグ</ cols> 。 デフォルトとは異なる列の幅を設定するのに役立ちます。 記入済みフォームでは、次のようになります。



 <cols> <col min="1" max="2" width="9" customWidth="1"/> <col min="3" max="4" width="16" customWidth="1"/> <col min="5" max="6" width="66" customWidth="1"/> <col min="7" max="8" width="42" customWidth="1"/> </cols>
      
      





ネストされた</ col>タグは、一見すべての列ではなく、行内の同じ幅の列のグループを示します。





5.実際には、 <sheetData>タグは、セルのコンテンツが保存されるゾーン、またはタイプに応じてリンクするゾーンです。 平均して、次のようになります。



 <sheetData> <row r="1"> <cr="A1" s="3" t="s"><v>0</v></c> <cr="B1" s="3" t="s"><v>1</v></c> <cr="C1" s="3" t="s"><v>2</v></c> </row> <row r="2"> <cr="A2" s="2"><v>1</v></c> <cr="B2" s="2"><v>37539</v></c> <cr="C2" s="2" t="s"><v>14</v></c> </row> <row r="3"> <cr="A3" s="2"><v>2</v></c> <cr="B3" s="2"><v>33227</v></c> <cr="C3" s="2" t="s"><v>21</v></c> </row> </sheetData>
      
      





ご覧のとおり、 <sheetData>タグには、実際の(シリアルではなく)行番号を示す「r」属性を持つ<row>タグが含まれています。たとえば、行1は空ですが、行2は空ではないことに注意してください。



「手紙を後悔しましたか?」とあなたは尋ねます。 「メモリを節約する」とマイクロソフトは答えます。 多くの細胞で1600万の制限を思い出せば、その動機が明らかになります。 理論的には、属性名に1つ(!)の余分な文字があると、ファイル全体を読み取るときに何百万もの余分な文字が発生することがあります。



<row />タグには<c /> -セルタグが含まれます。 この例は、セルに3つの主要な属性があることを示しています。





sharedStrings.xmlファイルについて説明したときに、シートレイアウトファイルで複数行のセルがマークされていることを説明しました。 これは、たとえば次のように行われます。



 <row r="1" spans="1:9" ht="45" customHeight="1" x14ac:dyDescent="0.3"> <cr="A1" s="2" t="s"><v>3</v></c> </row>
      
      





つまり、厳密に言えば、カスタムセルの高さを指定し、このカスタムの高さを適用するためのフラグを設定する必要があります。



6. <mergeCells />タグ 。 ご存じのとおり、Excelにはセルを結合する機能があります。 シート上のすべての結合セルがここにリストされます。 記入されたフォームでは、タグは次のようになります。



 <mergeCells count="40"> <mergeCell ref="G15:I15"/> <mergeCell ref="E3:F3"/> <mergeCell ref="E4:F4"/> </mergeCells>
      
      





ご覧のとおり、1つのマージされたセルは、マージの範囲を定義する単一のref属性を持つ単一の<mergeCell />タグによって示されます。



7. <autoFilter />タグ。 ユーザーがレポートで見たいフィルター。 完全に、タグは次のようになります。



 <autoFilter ref="A1:N1"/>
      
      





属性「ref」は、アクティブなフィルターセルが占める領域を定義することを理解するのは簡単です。



さて、ファイル内の「甘い」は印刷用のページ設定です。 これは私のファイルの1つからの例です。



 <pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3"/> <pageSetup paperSize="9" orientation="portrait" r:id="rId1"/>
      
      





<pageMargins />タグはマージンを設定し、 <pageSetup />タグ優先用紙設定を設定します。



最初の部分へのコメントでは、PL / SQLを使用してこの奇跡のテクノロジーを実際に編集することについて話をしたいという要望がありました。 次の部分はそれについてです。



All Articles