【C#】.tsvファイルを.xlsxに変換する方法(Microsoft.Office.Interop.Excel 版)

目次

はじめに

業務などで .tsv ファイル(タブ区切りテキスト)を扱っていると、Excel形式(.xlsx)に変換したい場面が多々あります。
今回は、C#を使って.tsvファイル.xlsxファイルに変換する方法についてご紹介いたします。


使用ライブラリと構成

本記事では、C#で**「Microsoft.Office.Interop.Excel」を使わず、代わりに「EPPlus」ライブラリ**を利用して高速に.xlsxへ変換する方法を説明します。
なお、EPPlusの使用には NuGetパッケージからのインストールが必要です。


プログラムの流れ

今回の処理の流れは以下の通りです。

  1. ボタンをクリックして .tsvファイル を選択する
  2. デスクトップに .xlsx 形式で保存する
  3. 保存完了後、メッセージボックスで通知

実装コード

以下が btn_TSVtoExcel というボタンをクリックしたときのコードです。

using OfficeOpenXml; // EPPlusの名前空間
using System.IO;
using System.Text;

private void btn_TSVtoExcel_Click(object sender, EventArgs e)
{
    OpenFileDialog openFileDialog = new OpenFileDialog
    {
        Filter = "TSVファイル (*.tsv)|*.tsv|すべてのファイル (*.*)|*.*",
        Title = "TSVファイルを選択してください"
    };

    if (openFileDialog.ShowDialog() == DialogResult.OK)
    {
        string tsvFilePath = openFileDialog.FileName;
        string xlsxFilePath = Path.Combine(
            Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
            Path.GetFileNameWithoutExtension(tsvFilePath) + ".xlsx"
        );

        try
        {
            ExcelPackage.LicenseContext = LicenseContext.NonCommercial;

            using (ExcelPackage excelPackage = new ExcelPackage())
            using (StreamReader sr = new StreamReader(tsvFilePath, Encoding.GetEncoding("Shift_JIS")))
            {
                var worksheet = excelPackage.Workbook.Worksheets.Add("Sheet1");
                int rowIndex = 1;
                string line;

                while ((line = sr.ReadLine()) != null)
                {
                    string[] fields = line.Split('\t');
                    for (int colIndex = 0; colIndex < fields.Length; colIndex++)
                    {
                        worksheet.Cells[rowIndex, colIndex + 1].Value = fields[colIndex];
                    }
                    rowIndex++;
                }

                excelPackage.SaveAs(new FileInfo(xlsxFilePath));
            }

            MessageBox.Show("デスクトップに .xlsx ファイルが作成されました。", "変換完了", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
        catch (Exception ex)
        {
            MessageBox.Show($"エラーが発生しました: {ex.Message}", "エラー", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }
}

実行結果

上記のコードを実行すると、元の .tsvファイル と同じファイル名.xlsxファイルデスクトップ上に出力されます。
タブ区切りで並んだデータが正しくExcelのセルに分割・整形されて出力されます。


注意点

  • .tsv ファイルの文字コードが Shift_JIS であることを前提にしています。
    他の文字コードを使っている場合は、Encoding を変更してください。
  • EPPlusライブラリは 非商用ライセンス で使用可能です。業務利用には別途ライセンス確認が必要です。

補足:Microsoft.Office.Interop.Excel との比較

一方で、Microsoft.Office.Interop.Excel を使用して同様の変換を行うことも可能ですが、以下のような注意点があります。

  • Excelアプリケーションがインストールされている必要がある
  • COMベースのため、動作が遅く不安定になりやすい
  • サーバー環境や無人実行には不向き

そのため、EPPlusの方が軽量で高速な変換処理に適しています


まとめ

今回は、C#とEPPlusを用いて .tsvファイルを.xlsx形式に変換する方法をご紹介しました。

ポイントは以下の通りです。

  • OpenFileDialogで .tsvファイル を選択
  • 行ごとにタブ区切りで分割し、Excelに出力
  • デスクトップに .xlsxファイル を保存
  • EPPlusを使うことで高速で安定した処理が可能

Excelファイルへの変換後、さらにデータ加工や可視化処理へつなげることも容易になります。ぜひ業務で活用してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次