それで、会話を続けます。 念のため、最初は
ここにあることを明確にし
ます 。
文字列値とその格納方法については、最初の部分で渡すことで既に言及しましたが、ここでさらに詳しく説明します。 文字列データで満たされたテーブルがあり、それが大きいと想像してください。 さらに、その中のすべての値が一意になることはほとんどありません。 それらのいくつかは、いいえ、いいえ、はい、テーブルの異なる部分のどこかに繰り返されます。 このような配列を「そのまま」シートの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 />タグです。 そして、ここで使用される属性は次のとおりです。
- ySplit-固定された行の数を示します。 列をドッキングするための同様のxSplit属性があります 。
- topLeftCell-デフォルトで表示されるFASTエリアの左上のセルを示します。
- activePane -UNFixedエリアの場所を示します。 マニュアルでは、この属性は保護されていない領域がどちらの側にあるかを支配すると述べています。 しかし、異なる値を試してみたところ、何らかの理由で同じ結果が得られました。 「デフォルトで」オプションとして、私は自分でbottomRightを選択しました。
- state-固定領域の状態インジケータ。 単純な行固定では、固定値が使用されます。
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>タグは、一見すべての列ではなく、行内の同じ幅の列のグループを示します。
- min属性はグループの最初の列です。
- max属性は、グループの最後の列です。
- width属性は、グループの列の幅です。
- customWidth属性は、カスタム幅を適用するためのフラグです。これがない場合、幅はデフォルトのままです。
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つの主要な属性があることを示しています。
- rはセルのアドレスです。
- s-セルスタイル。 この記事の最初の部分を思い出してください:styles.xmlファイルには、登録されたセル設計スタイルをリストするセクション<cellXfs />があります。 <c />タグの「s」属性は、0から始まるこのリストの要素への単なるリンクです。
- t -sharedStrings.xmlファイルの文字列値のテーブルを参照する必要があることを示します。 属性が指定されている場合-連絡先、指定されていない場合-タグの本文にあるとおりに書き込みます。 この属性を指定せずにタグの本文にテキストを入力しようとすると、ファイルを開くときにExcelが誓うが、それが属する場所にフレーズを忠実に転送することは注目に値する(ただし、クイックウィットに依存せず、すぐにsharedStrings.xmlに行を書き込むことをお勧めします);
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を使用してこの奇跡のテクノロジーを実際に編集することについて話をしたいという要望がありました。 次の部分はそれについてです。