遭遇したエラー
'<ファイル名>' には読み取れない内容が含まれています。このブックの内容を回復しますか ?
ブックの発行元が信頼できる場合は、[はい] をクリックしてください。
はい(Y)をクリックすると
「読み取れなかった内容を修復または削除することにより、ファイルを開くことができました」
という内容の ['<ファイル名>' の修復]
xlsの時にはなかったがxlsxでは発生する。
違う解決策
Microsoftサポートでこのエラーについての原因と解決策が提示されていた。
こちら
原因
セルの枠線上に、[サイズとプロパティ] を [セルに合わせて移動やサイズ変更をする] に設定している Line オブジェクトがある状態で行または列の追加をすると、OpenXML 形式で情報を保持する際の "線の位置情報" に不整合が生じます。
xlsx 形式のファイルを開くときに表示されるファイルが破損している旨のメッセージは、この "線の位置情報" の不整合を検知して表示されています。
(ふむふむ、何を言っているのか分からなかった。)
解決策
Excel 2013
Excel 2013 でこの問題を解決するには、Office 2013 の Service Pack 1 をインストールします。
Office 2013 の Service Pack 1 について参照するには、次のサポート技術情報をクリックしてください。
2817430 Description of Microsoft Office 2013 Service Pack 1 (SP1)
Excel 2010
Excel 2010 でこの問題を解決するには、Excel 2010 の修正プログラム パッケージをインストールします。
修正プログラム パッケージについて参照するには、次のサポート技術情報をクリックしてください。
2825798 Description of the Excel 2010 hotfix package (Excel-x-none.msp): October 8, 2013
Excel 2007
Excel 2007 につきましては、メインストリーム サポートが終了しているため、修正プログラムはございません。
(Office365を使用しているためこれらに該当するのか分からなかったがエラー内容見る限りこの辺りで間違えないだろうとおもっていた。)
本当の原因
いろいろ調べる中でこのエラーに苦しむ人が多く、おまけに情報量がとてもすくなかったので
今回その中の一つになればと思っています。
今回のエラーの原因は
シートの命名が原因でした。
シートにはいろいろと使用できない文字が決められており
今回はそれに変な形でぶつかった。
「 」スペースがexcelのシートに含まれていたのでよくわかないがエラーが起きていた。
手動でスペースを空けてシートに入力する分にはエラーは発生しないが
プログラムでexcel出力を行うとなぜかエラーがおきる。
プログラムの方でスペースを排除したら
異常なくexcelファイルが出力された。
おそらく
「xls」と「xlsx」でのシートの命名規則に違いがあり
今回それに引っかかったのかなと思う。
まとめ
エラーの内容とMicrosoftの提示していることが違いすぎて
かなり迷走してしまった。
提示している事象でもおそらく同じエラーが出るのかなと思う。
エラーに対しての原因と解決策が一致していなさそうなので
もしこのエラーについて調べてこの記事に出会った方は
「シートの命名」がもしかしたら・・・
かもしれないので検証してみてください。
ありがとうございました。