3
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?

【OutSystems】Advanced Excel 使用時に入力規則が解除されてしまう

Last updated at Posted at 2024-06-21

OutSystems の Advanced Excel で Excel ファイルを出力したところ、一部セルの入力規則が解除されてしまう事象が発生した。
原因と回避方法について記載する。

対象

  • OutSystems 11 で forge「Advanced Excel」を使用している方

事象

  • Advanced Excel にて Excel ファイル出力時、一部セル(列)の入力規則が解除されてしまう

発生条件

  1. 同じ条件での入力規則が複数のセル範囲にある
    例) A列及びC列が同じ入力規則になっている
  2. Row_Insert アクションで行の追加を行っている。
    なお、追加した行だけでなく、対象列すべての行に対する入力規則が解除されてしまう。

※ Row_Insert 以外でも発生する可能性あり。

原因

Excel ファイル(xlsx)を解凍した際、入力規則(formula1)の適用セル(sqref)が複数の範囲になっていると事象が発生する。
image.png

回避方法

入力規則(formula1)の適用セル(sqref)が単一の範囲になるようにする。
image.png

再現手順と原因

使用するツールやアカウントなど

  • OutSystems 11
  • Advanced Excel (記載時のバージョンは 2.2.17)
  • Excel for the web (Microsoft 365 無料版) ※通常のExcelでも可

再現手順

テンプレート Excel の作成

A列とB列に入力規則を設定
image.png
image.png
image.png

Action の作成

Resouces に、テンプレートファイルをアップロード。
image.png

テンプレートファイルを読み込み、 Row_Insert で 10 行目に行を追加。
このバイナリデータをダウンロードする処理を作る(記載省略)。
image.png

Action を実行し、事象が再現しないことを確認(10行目に行が追加され、A列とB列の入力規則がある)。
image.png

テンプレートファイルのA列をC~E列へコピー&ペーストし、 Resouces 上のファイルも更新。
image.png

再度 Action を実行し、事象が再現することを確認。
(10行目に行が追加され、A列とB列の入力規則があるが、C~E列の入力規則がない。)
image.png

原因(仮説と検証)

仮説

問題を切り分けていった結果、 Excel ファイルの内容(ワークシートの XML)によって事象が発生すると推測した。
xlsx ファイルは zip ファイルなので、解凍することでワークシートの XML ファイルを確認することができる。
上記、再現手順の xlsx を解凍すると入力規則の適用セルが「A2:A20 C2:E20」と指定されていることが確認できる。
image.png
『セル範囲 (sqref 属性) において、半角ブランクで区切られた範囲は無視され、最初の範囲しか認識されていないのでは?』という仮説を立て検証を行う。

検証

A列をコピー&ペーストせずに、C~E列のそれぞれに対しA列と同様の入力規則を設定する。
image.png
image.png
image.png

Resouces のファイルを更新し、再度 Action を実行すると、C列に入力規則があるがD~E列は入力規則がなくなっている。
image.png
image.png

ワークシートの XML は以下のようになっている。
A列をコピー&ペーストしなかったことにより、A列の入力規則とC~E列の入力規則は別々の定義となっているが、C~E列は1つの sqref 属性内で定義されていることがわかる。
A~C列は入力規則があり、D~E列は入力規則が解除されていたことから、この時点で仮説が正しいと考えられる。
image.png

回避方法

各列に対し、他と重複しない入力規則を設定した後、正しい入力規則に設定する。
例) C列に「1」、D列に「2」、E列に「3」のような他と重複しない入力規則を一度設定した後、C~E列にA列と同じ入力規則(A,B,C)を設定する。
image.png
image.png
image.png
image.png

Resouces のファイルを更新し、再度 Action を実行すると、A~E列の入力規則が残っていることが確認できる。
image.png

ワークシートの XML を確認すると、各 sqref 属性には1つの範囲しか指定されていないことも確認できる。
image.png

XML 出力内容が原因であることから、1度回避しても再度テンプレートファイルを更新した際に事象が再現してしまう危険性あり。
Excel のバージョン等によっても結果が変わる可能性あり。
このことから、 Advanced Excel のアクションを使って入力規則を設定する等を検討するのもアリ!

あとがき

原因が原因なだけに、入力規則以外にも『ここのセルは正しいのに、こっちのセルはおかしい』なんて事象が発生したら XML の内容を確認してみるとヒントがあるかも!

さいごに

株式会社メディアテックでは絶賛 開発メンバを募集中 です。
ローコード開発だけではなく、RPAやBIエンジニア諸々多数の募集をしておりますので、みなさまのご応募をお待ちしております。

3
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
3
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?