ディスカッション

答えを見つけ、質問し、Alteryx の専門知識を共有してください。

(情報共有)入力データツール の File Format: Excel Legacy で文字化けが回避できた件

Yoshiro_Fujimori
15 - Aurora
15 - Aurora

入力データツール で ある Excel ファイル を読み込んだ際に なぜか

記号や全角英字などが 以下のように Hex コードで抽出されて困っていました。

 

Excel文字化け.png

 

文字化けにはいろいろな出方や原因がありますので、対処法もケースバイケースですが、

今回の化け方から、恐らくExcelの内部で使用されるエスケープシーケンスが影響していると思われたので

 

ツールの File Format オプションを 以下のように

"Microsoft Excel (*.xlsx)" から "Microsoft Excel Legacy (*.xlsx)" に変えてみたところ;

 

FileFormatOption.png

 

以下のようにキレイに読み出せるようになりました✌️

 

文字化け解消.png

 

以上、文字化けの際のご参考になれば幸いです(すでにご存じでしたらすみません)。

 

なお、Excel Legacy フォーマットについては

下記の @AkimasaKajitani さんのブログ記事を参考にさせて頂きました。

【AlteryxTips】Excelファイルの読み込みについての注意事項

  • XLSXファイルについては、Alteryxの通常の読み込みとLegacyドライバを使う場合で、
    読み込み時のデータに差分が出てくる可能性があります。
  • これは、Legacyドライバでは、Excelファイルに設定されている書式が適応されたものを読み込むためのようです
    (例えば、1.001という値がセルに入っていて、これを表示形式で1にしていると、
    Legacyドライバでは1が読み込まれ、標準では1.001という値が読み込まれます)。
  • Excelに設定された書式をわざと有効にしたいような場合はわざわざLegacyドライバを用いて読み込みを行う
    ということもあるかもしれません。
    必要に応じて使い分けていただければと思います。

 

 

3件の返信3
AkimasaKajitani
17 - Castor
17 - Castor

@Yoshiro_Fujimori さん

 

共有ありがとうございます。ちなみに、このようなExcelになる際に、なにか再現性などあるのでしょうか?

ちょっとXMLの中身を見てみたい感じですね・・・。

 

 

※ちなみに、弊社ブログは私のみで書いてるわけではないので、私のブログ、ではなく弊社のブログ、ですかね・・・(とはいえ、リンクいただいたのは私が書いている記事なので間違いではないですが・・・(笑)。

Yoshiro_Fujimori
15 - Aurora
15 - Aurora

@AkimasaKajitani さん

弊社ブログは私のみで書いてるわけではないので

失礼しました 😅 Author が AkimasaKajitani になっていたので。

 

ちょっとXMLの中身を見てみたい

.xlsx を unzip して xl/sharedStrings.xml の中身をみると、もともと Hex で入っています。

スポイラ
<sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="120" uniqueCount="61">
...
<si>
<t>グローバル金融犯罪対策部グローバル金融犯罪対策室_xFF08_日本_xFF09__x3000__x3000__x3000__x3000__x3000__x3000__x3000__x3000__x3000__x3000__x3000__x3000__x3000__x3000__x3000__x3000__x3000__x3000__x3000__x3000__x3000__x3000__x3000__x3000_</t>
</si>
いちど Excel で読みだして別名で保存したものは 文字化けなしで読み取れました。
(ファイルがたくさんあるので、業務的には Excel で保存しなおすわけにはいきませんが)
 
なお、この .xlsx ファイルは SAS から出力されたものらしく
SAS で出力する時のオプションの問題かな、など興味はありますが
SAS の実行環境を持っていないのと、Excel Legacy で読み出す workaround があるので
いったん 置いておこうかと。
 
参考にしたサイト:
Excelファイル操作をプログラミングする前に、まずはxlsxをzipに変えて内部構造を見てみよう
AkimasaKajitani
17 - Castor
17 - Castor

@Yoshiro_Fujimori さん

 

Alteryxで書き込むとxl/sharedStrings.xml は作成されないですが、Excelで上書きすると出てきますね・・・。

 

でも、普通の文字で入っているので、SAS側のExcelの作り方の問題ですね・・・そもそもUnicode文字列そのまま書き込むのが仕様通りなのかどうかよくわかりませんが・・・(さすがにMSの仕様まではちょっと読む気にはならないです・・・)。

 

ちょこちょこMicrosoft以外が作るExcelファイルってExcel以外で読み込もうとするとおかしいケースがあるので要注意ですね・・・。

 

一度CASEであげてみて反応を見るのも手かな、と思います。

(標準の接続はネイティブドライバですが、レガシーだとMicrosoftのドライバなので、そっちの方だとExcelが読み込んでいるのと同じように読み込めるのかもしれません)。