50338


c# でexcelファイル（xls）を読み込んだ値を別のテキストファイルに出力する処理をwindowsサーバー上で検討中です。  
なお、この処理はタスク起動によるバックグラウンド処理となります。  
この場合、excelをwindowsサーバーへインストールすればc#標準のMicrosoft.Office.Interop.Excelを利用して実現可能でしょうか？

上記がNGの場合（そもそもexcelをwindowsサーバーに入れることに障害はない？）、何かやり方がありますでしょうか？


CC BY-SA 4.0
2018-11-14T22:48:54.353
50337
2022-01-06T06:56:21.150
2022-01-06T06:56:21.150
3060
9228
question
c# excel windows-server
C# での Excel ファイル読み込みを Windows サーバ上でバックグラウンド処理として実行したい


[Office のサーバーサイド オートメーションについて](https://support.microsoft.com/ja-
jp/help/257757/considerations-for-server-side-automation-of-
office)で次のように説明されています。

> Microsoft Office のすべての現行バージョンは、クライアント
> ワークステーション上のエンドユーザー製品として実行されるように設計、テスト、および構成されました。 また、対話型デスクトップとユーザー
> プロファイルが想定されています。 無人で実行されるように設計されたサーバーサイド
> コンポーネントのニーズを満たす必要があるレベルの再入機能またはセキュリティは提供していません。
>
> マイクロソフトは、現在のところ、無人の非対話型クライアント アプリケーションまたはコンポーネント (ASP、ASP.NET、DCOM、および NT
> サービスを含む) からの Microsoft Office
> アプリケーションのオートメーションに関して、推奨もサポートも行っていません。それは、このような環境で Office を実行した場合、Office
> で不安定な動作やデッドロックが発生する可能性があるためです。

`Microsoft.Office.Interop.Excel`もオートメーションであり、非対話型やサーバサイドでの動作はサポートされていません。


CC BY-SA 4.0
2018-11-14T23:17:20.663
50338
2018-11-14T23:17:20.663
4236
50337
answer


c#
でexcelファイル（xls）を読み込む場合は、[ExcelDataReader](https://github.com/ExcelDataReader/ExcelDataReader)というライブラリーを使うのが最も簡単で高速です。

nugetでは、<https://www.nuget.org/packages/ExcelDataReader/>
で、.NETのほぼすべての環境に対応していて、ダウンロード数も多くよく使われているパッケージです。

詳しくは、Qiitaの記事「[ExcelのデータをPython、C#で読み込むまとめ](https://qiita.com/yniji/items/cd8c3f361bc18506765b)」に書いています。


CC BY-SA 4.0
2018-11-15T02:03:41.363
50340
2018-11-15T04:21:55.583
2018-11-15T04:21:55.583
15171
15171
50337
answer


C#でExcel（XLS）ドキュメントをほかのテキストドキュメントとして読み込む方法を求めていますね、そうならばこちらの無料で利用できるC#コンポーネント、Free
Spire.XLS for
.NETを使ってみてください、無料ダウンロード先は[こちら](https://www.e-iceblue.com/Download/download-
excel-for-net-free.html)です。そしてExcelからテキスト形式に出力する詳細なコードは以下のようになります：

[code]

    using Spire.Xls;
    namespace Excel_to_Txt
    {
        class Program
        {
            static void Main(string[] args)
            {
                Workbook workbook = new Workbook();
                workbook.LoadFromFile(@"..\ExceltoTxt.xls");
                Worksheet sheet = workbook.Worksheets[0];
                sheet.SaveToFile("ExceltoTxt.txt", " ", Encoding.UTF8);
            }
        }
    }
    
[/code]


CC BY-SA 4.0
2022-01-06T06:33:55.070
85515
2022-01-06T06:33:55.070
48858
50337
answer