C#でExcelをCSVに、またはCSVをExcelに変換する

ExcelファイルをCSV形式に変換すると、スプレッドシート内のデータがカンマで区切られた純粋なテキスト形式に変換されます。この形式は、ほとんどのテキストエディタやデータ処理ソフトウェアで読むことができ、データ分析やデータ転送をより簡単かつ迅速に行うことができます。CSVファイルは、データ処理に便利なExcel形式にも変換できる。この記事では、[**Free Spire.XLS for .NET（無料版）**](https://www.e-iceblue.com/Introduce/free-xls-component.html)ライブラリを使用して、Excel（XLS/ XLSX）とCSV形式の変換を実装する方法を紹介します。
* [C#でExcelをCSVに変換する](#cでexcelをcsvに変換する)
* [C#でCSVをExcelに変換する]()

## 無料のExcelライブラリをインストールする
* **方法1：[NuGet](https://www.nuget.org/packages/FreeSpire.XLS) 経由でインストールする**
Visual Studioを開いて新しいプロジェクトを作成します。次に、「Solution Explorer」で「References」を右クリックし、「Nuget Manage Packages」を選択します。FreeSpireXLSを検索し、インストールします。
* **方法2：手動で Spire.Xls.dll を追加する**
[Free Spire.XLS for .NETパッケージをダウンロードします]((https://jp.e-iceblue.com/download/free-spire-xls-for-net.html))。次に、Visual Studioて新しいプロジェクトを作成し、右側の「Solution Explorer」で「References」を右クリックし、「Add Reference」>「Browse」を選択し、インストールパスの下にあるBINフォルダー内のdllファイルを見つけ、「OK 」をクリックしてプログラムに参照を追加します。

## C#でExcelをCSVに変換する
1. `Workbook` クラスのインスタンスを作成します。
1. `Workbook.LoadFromFile()` メソッドを使用して Excel ファイルをロードします。
1. `Workbook.Worksheets [index]` プロパティを使用して、インデックスで特定のワークシートを取得します。
1. `XlsWorksheet.SaveToFile()` メソッドを使用して、特定のワークシートをCSVとして保存します。

> 以下の方法をお選びいただけます。
SaveToFile(string fileName, string separator)
SaveToFile(string fileName, string separator, Encoding encoding)
SaveToFile(string fileName, string separator, bool retainHiddenData)

**C#コード：**
```csharp
using Spire.Xls;
using System.Text;

namespace ConvertAWorksheetToCsv
{
    class Program
    {
        static void Main(string[] args)
        {
            //Workbookクラスのインスタンスを作成する
            Workbook workbook = new Workbook();
            //Excelファイルをロードする
            workbook.LoadFromFile("C:\\Users\\Administrator\\Desktop\\Sample.xlsx");
            //最初のワークシートを取得する
            Worksheet sheet = workbook.Worksheets[0];
            //ワークシートをCSVとして保存する
            sheet.SaveToFile("ExcelToCSV.csv", ",", Encoding.UTF8);
        }
    }
}
```
***出力CSVファイル***
![ExcelToCSV.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/7d6035ca-1b92-3d57-cf57-1948e62e01fa.png)


## C#でCSVをExcelに変換する
1. `Workbook` クラスのインスタンスを作成します。
1. `Workbook.LoadFromFile(string fileName, string separator, int startRow, int startColumn)` メソッドを使用して 、CSV ファイルをロードします。
1. `Workbook.Worksheets [index]` プロパティを使用して、インデックスで特定のワークシートを取得します。
1. `Worksheet.AllocatedRange` プロパティを使用して、ワークシートの使用範囲にアクセスします。
1. `CellRange.IgnoreErrorOptions` プロパティを IgnoreErrorType.NumberAsText として設定することで、範囲内の数値をテキストとして保存するときにエラーを無視します。
1. `CellRange.AutoFitColumns()` と `CellRange.AutoFitRows()` メソッドを使用して行の高さと列の幅を自動調整します。
1. `Workbook.SaveToFile(string fileName, ExcelVersion version)`メソッドを使用して CSV を Excel に保存します。

**C#コード：**
```csharp
using Spire.Xls;

namespace ConvertCsvToExcel
{
    class Program
    {
        static void Main(string[] args)
        {
            //Workbookクラスのインスタンスを作成する
            Workbook workbook = new Workbook();

            //CSVファイルをロードする
            workbook.LoadFromFile(@"C:\Users\Administrator\Desktop\ExcelToCSV.csv", ",", 1, 1);

            //最初のワークシートを取得する
            Worksheet sheet = workbook.Worksheets[0];

            //ワークシートの使用範囲にアクセスする
            CellRange usedRange = sheet.AllocatedRange;
            //数値をテキストとして保存するときにエラーを無視する
            usedRange.IgnoreErrorOptions = IgnoreErrorType.NumberAsText;
            //行の高さと列の幅を自動調整する
            usedRange.AutoFitColumns();
            usedRange.AutoFitRows();

            //結果ファイルを保存する
            workbook.SaveToFile("CSVToExcel.xlsx", ExcelVersion.Version2013);
        }
    }
}
 ```
 ***CSVファイルから変換されたExcelファイル：***
 ![CSVtoExcel.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2811193/148caaff-c877-c93d-741a-6cc2fb884dc6.png)

*** 
この無料ライブラリは、[ExcelからPDF](https://www.e-iceblue.com/Tutorials/Spire.XLS/Spire.XLS-Program-Guide/Excel-Conversion/NET-Excel-New-method-of-Convert-Excel-to-PDF.html)、[ExcelからHTML](https://www.e-iceblue.com/Tutorials/Spire.XLS/Spire.XLS-Program-Guide/Convert-Excel-to-HTML-Excel-to-HTML-in-C-VB.NET.html)、[ExcelからTXT](https://www.e-iceblue.com/Tutorials/Spire.XLS/Spire.XLS-Program-Guide/How-to-Convert-Excel-to-Text-in-C-and-VB.NET.html)といった他のファイル形式への変換もサポートしています。興味のある方は、クリックしてより多くの例を見つけることができます。

https://www.e-iceblue.com/Tutorials/Spire.XLS/Spire.XLS-Program-Guide/Spire.XLS-Program-Guide-Content.html