2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-04-28

##セル内の文字列の置換~その1
 前回ではセル内の文字列の読み出しができたので、今度は置換を試してみたいと思います。前回使ったものに手を加えて、図のようなxlsxファイルを用意しました。
コメント 2019-04-28 231324.png
どのセルの文字列か判定できるようにこんな風にしましたが、ひとまず、全部同じ文字列に置換させてみます。

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で開いたときにエラーになります(そうと分からずちょっと悩みました)。できたファイルは正常に開けました。
コメント 2019-04-29 004509.png
xlsxの自力編集は高率で読み込みに失敗するらしいのですが、sharedStrings.xmlを整形した程度なら大丈夫なようです。
~続く~

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?