目次
経緯
.tsvファイルを.xlsxに変換したいと思い。
今回勉強しました。
「Microsoft.Office.Interop.Excel」を使用する
まず、プログラムの流れを説明します。
- btn_TSVtoExcelボタンを押す
- ダイアログが出てきて、変換したいtsvファイルを選ぶ
- デスクトップに.xlsxに変換されたファイルが保存される。
という流れです。下がコードです。
using Excel = Microsoft.Office.Interop.Excel;
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
{
using (ExcelPackage excelPackage = new ExcelPackage())
using (StreamReader sr = new StreamReader(tsvFilePath, Encoding.GetEncoding("Shift_JIS")))
{
ExcelWorksheet worksheet = excelPackage.Workbook.Worksheets.Add("Sheet1");
int rowIndex = 1;
string line;
while ((line = sr.ReadLine()) != null)
{
string[] fields = line.Split(new[] { '\t' }, StringSplitOptions.None);
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);
}
}
}
このコードの難点は、処理速度がすごく遅いです。
データをただ変換するだけなら、これでもいいと思いますが、
そのあと、データを処理すとなると、たいへん時間がかかります。
何かの参考になれば、幸いです。
ここまで読んでいただきありがとうございました。