プロデルでネ申Excel作成を自動化したい #1


セル内の文字列の置換~その1

 前回ではセル内の文字列の読み出しができたので、今度は置換を試してみたいと思います。前回使ったものに手を加えて、図のようなxlsxファイルを用意しました。

どのセルの文字列か判定できるようにこんな風にしましたが、ひとまず、全部同じ文字列に置換させてみます。

xlsx操作2.rdr
文字列xmlは、「[プログラムの位置]カレンダー\xl\sharedStrings.xml」をXMLとして開いたもの
文字セル一覧は、文字列xmlから「sst\si」を取得したもの
文字セル一覧を箱へそれぞれ繰り返す
    臨時一覧は、箱の要素一覧
    臨時一覧を器へそれぞれ繰り返す
        もし器の名前が「t」ならば
            器の内容は、「テスト」
        もし終わり
    繰り返し終わり
繰り返し終わり

「[プログラムの位置]カレンダー\xl\sharedStrings.xml」に文字列xmlを保存する

プロデルでXMLをファイルに保存すると、インデントや改行で整形して出力してくれます。コードの実行結果です。

sharedString.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="56" uniqueCount="56">
  <si>
    <t>テスト</t>
    <phoneticPr fontId="3" />
  </si>
  <si>
    <t>テスト</t>
    <phoneticPr fontId="3" />
  </si>
  <si>
    <t>テスト</t>
    <phoneticPr fontId="3" />
  </si>
  <si>
    <t>テスト</t>
    <phoneticPr fontId="3" />
  </si>
  <si>
    <t>テスト</t>
    <phoneticPr fontId="3" />
  </si>
 <以下略>

置換できています。

xlsxファイルを復元する

このxmlファイルからxlsxファイルを復元します。元のxlsxファイルを展開した時にできたファイル群をzip圧縮して拡張子を変更すればいいのですが、いろいろなサイトで書かれているように、ファイル群が入っているフォルダごと圧縮するのではなく、その直下の

_rels
docProps
xl
[Content_Types].xml

の4つをzip圧縮しないとExcelで開いたときにエラーになります(そうと分からずちょっと悩みました)。できたファイルは正常に開けました。

xlsxの自力編集は高率で読み込みに失敗するらしいのですが、sharedStrings.xmlを整形した程度なら大丈夫なようです。
~続く~