開けないエクセル(xlsx)
業務系システムまわりで単純にデータをエクスポートしたのに開けないエクセルが出来上がることがある。
出るエラーは
「〜〜の一部の内容に問題が見つかりました。〜〜」
で「はい」を押して開いてもほぼ中身がない状態になり、もう意味をなしてない。
原因
単純なデータのみだとだいたいどこかのセル内に制御文字などが紛れてる。
xlsx形式はzipと同等なので拡張子変えれば解凍できる。
その中に xl/sharedStrings.xml
というファイルがあり、その中にセル内の文字データが入ってる。
で&#で検索すると 
みたいに入ってることがある。
コマンドでなんとかする
unzipでsharedStrings.xmlを出してやってxmllintかける
unzip -p エクセルファイル.xlsx xl/sharedStrings.xml | xmllint --format -
でやるとエラーになってる箇所を出してくれる。
エラーがわかれば
できればコマンドでsedかけて元のzipに戻す、ができたらいいけどなんか簡単でなかった。
なんとvimでzipファイル内を直接編集できるので、vimで置換かけて保存。
無事に開けるようになりました。
余談
なんかrubyとかそのへんの言語で簡単にエラー箇所がわかればいいな、と思ったが意外によしなにエラー箇所を出してくれないみたいだった。なのでちょっと手間ではあるが上記方法に落ち着いた。