はじめに
業務などで .tsv
ファイル(タブ区切りテキスト)を扱っていると、Excel形式(.xlsx
)に変換したい場面が多々あります。
今回は、C#を使って.tsvファイル
を.xlsxファイル
に変換する方法についてご紹介いたします。
使用ライブラリと構成
本記事では、C#で**「Microsoft.Office.Interop.Excel」を使わず、代わりに「EPPlus」ライブラリ**を利用して高速に.xlsx
へ変換する方法を説明します。
なお、EPPlusの使用には NuGetパッケージからのインストールが必要です。
プログラムの流れ
今回の処理の流れは以下の通りです。
- ボタンをクリックして
.tsvファイル
を選択する - デスクトップに
.xlsx
形式で保存する - 保存完了後、メッセージボックスで通知
実装コード
以下が 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ファイルへの変換後、さらにデータ加工や可視化処理へつなげることも容易になります。ぜひ業務で活用してみてください。