Gobble up pudding

プログラミングの記事がメインのブログです。

MENU

Excelに使われているOpenXMLを手書きで書いてみる

スポンサードリンク

f:id:fa11enprince:20200628231605j:plain
Excel 2007以降で採用されたOpenXML形式についての記事です。
Excelは2007からバイナリ形式からXML形式に内部的に変わっていて、
XMLを記述すればエクセルでいい感じに表示できますよという内容です。
今回は紹介のため複雑なサンプルは書かず、単純なサンプルを書きます。
OpenXMLとはざっくりいえばExcelなどに採用されているXMLの記述ルールです。
詳細はここら辺を読むとわかりやすいでしょう。
仕様書は1000ページ以上あって分厚くてちょっと読むのがきついです。
Office Open XML - Wikipedia
Officeファイルの成り立ちと最新形、そして標準化 (2/2):XMLを取り込んだ最新Officeフォーマットとは(前編) - @IT
https://technet.microsoft.com/ja-jp/magazine/2006.01.blogtales%28en-us%29.aspx

次にOpenXMLをプレーンテキストに記述してエクセルで表示します。
テキストファイルを新規作成して拡張子をxlsにします(xlsxとすると形式が微妙に違うので開けません。今回は関連付けをしたいがためにxlsにしています)。
ファイル名は何でもいいですが、「openxml.xls」としましょう

<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook 
    xmlns="urn:schemas-microsoft-com:office:spreadsheet"
    xmlns:html="http://www.w3.org/TR/REC-html40"
    xmlns:o="urn:schemas-microsoft-com:office:office"
    xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
    xmlns:x="urn:schemas-microsoft-com:office:excel">
    <Styles>
        <Style ss:ID="Default" ss:Name="Normal">
            <Alignment ss:Vertical="Bottom" />
            <Borders />
            <Font />
            <Interior />
            <NumberFormat />
            <Protection />
        </Style>
        <Style ss:ID="bold_red">
            <Alignment ss:Vertical="Bottom" />
            <Borders />
            <Font ss:FontName="Arial" ss:Bold="1" ss:Color="#ff0000" />
            <Interior />
            <NumberFormat />
            <Protection />
        </Style>
    </Styles>
    <Worksheet ss:Name="Sheet1">
        <Table>
            <Column ss:Width="80"/>
            <Column ss:Width="80"/>
            <Column ss:Width="80"/>
            <Row ss:StyleID="bold_red">
                <Cell>
                    <Data ss:Type="String">First Name</Data>
                </Cell>
                <Cell>
                    <Data ss:Type="String">Last Name</Data>
                </Cell>
                <Cell>
                    <Data ss:Type="String">Phone Number</Data>
                </Cell>
            </Row>
            <Row>
                <Cell>
                   <Data ss:Type="String">Nancy</Data>
                </Cell>
                <Cell>
                   <Data ss:Type="String">Davolio</Data>
                </Cell>
                <Cell>
                   <Data ss:Type="String">(206)555-9857</Data>
                </Cell>
            </Row>
        </Table>
    </Worksheet>
</Workbook>

これで保存してダブルクリックでExcelで開きます(要2007以上)。
警告が出ますが無視して開くと次のように出ます。
f:id:fa11enprince:20150128032511p:plain