43871
C#でワード、エクセル、PDF、メールのmsgファイルといった形式のファイルの内容を読み込みたいのですが、テキストファイル以外はうまくいきません。

```

    string file = test.docx;
    
    using (StreamReader sr = new StreamReader(@file, Encoding.GetEncoding("Shift_JIS")))
    
```

テキストファイルに変換して読み込む方法が現実的だと思われるのですが、どうすればよいでしょうか？  
ご教授いただければ幸いです。
CC BY-SA 4.0
2018-05-08T04:10:41.957
43857
2018-05-09T03:20:19.643
2018-05-09T03:20:19.643
3060
28442
question
c#
C#でテキストではないファイルを読み込むには？
アプリが作るファイルはテキストファイルじゃないのでそれじゃダメです  
バイナリで読みましょう

って、それを読んでなにをしたいんでしょうか
CC BY-SA 4.0
2018-05-08T04:16:29.150
43858
2018-05-08T04:16:29.150
27481
43857
answer
テキストファイル以外は、そのファイルフォーマットに従った読み込みが必要になります。  
データ形式を調べるか、外部ツールを使うしかありません。  
Word/Excelだったら、MSからのライブラリがあるので、それを使えば、OKと思った。  
ただし、Word/Excelがインストールされている事が必須。
CC BY-SA 4.0
2018-05-08T11:30:10.963
43870
2018-05-08T11:30:10.963
43857
answer
> ワード、エクセル、PDF、メールのmsgファイルといった形式のファイル

これらのファイルは一般的に「 **バイナリファイル** 」と呼ばれ、単純なテキストファイルとは区別されます。

テキストファイルはメモ帳などで開けば人間の目で中身(=文字)を直接確認することができますが、バイナリファイルの方は基本的にそれぞれ対応したアプリケーションで開かないと中身はコンピュータしか判読できない形式になっています。

単純に「データとして読み込み・そのままファイルの内容をコピー」程度であれば **FileStreamクラス**
を使えばよさそうですが、文字データだけ抜き出してCSVに変換となるとそれなりの対応が必要になるかと思います。

**参考：**  
[バイナリ・ファイルを読み書きするには？［C#、VB］：.NET TIPS -
＠IT](http://www.atmarkit.co.jp/ait/articles/0711/08/news120.html)
CC BY-SA 4.0
2018-05-08T11:35:14.067
43871
2018-05-08T11:35:14.067
3060
43857
answer