【DBDictionary】文字フォーマット変換

CSV変換 コード

using Microsoft.VisualBasic.FileIO;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;

namespace Common.Convert {
/// <summary>
/// CSV変換
/// </summary>
public class CsvConverter {
/// <summary>エンコード</summary>
public Encoding Encod { get; }
/// <summary>ファイルパス</summary>
public string FileFullPath { get; }
/// <summary>区切り文字</summary>
public string Delimiter { get; }
/// <summary>ヘッダ有無</summary>
public bool Header { get; }

/// <summary>
/// コンストラクタ
/// </summary>
/// <param name="encod">エンコード</param>
/// <param name="fileFullPath">ファイルパス</param>
/// <param name="delimiter">区切り文字</param>
/// <param name="header">ヘッダ有無</param>
public CsvConverter(Encoding encod, string fileFullPath, string delimiter, bool header = true) {
Encod = encod;
FileFullPath = fileFullPath;
Delimiter = delimiter;
Header = header;
}

/// <summary>
/// CSV読み込み
/// </summary>
/// <returns></returns>
private List<List<string>> Read() {
var parser = new TextFieldParser(FileFullPath, Encod) {
TextFieldType = FieldType.Delimited,
Delimiters = new string[] { Delimiter },
TrimWhiteSpace = true,
};

// 全行読み込み
var rows = new List<List<string>>();
while (!parser.EndOfData) {
rows.Add(new List<string>(parser.ReadFields()));
}

return rows;
}

public DataTable GetDataTable() {
var rows = Read();

// 列設定
var table = new DataTable();
if(rows.Count == 0) {
return table;
}

//データテーブルに変換
if (Header) {
table.Columns.AddRange(rows.First().ToArray().Select(s => new DataColumn(s)).ToArray());
foreach (var row in rows.Skip(1)) {
table.Rows.Add(row.ToArray());
}
} else {
foreach (var col in rows.First()) {
table.Columns.Add("col" + (table.Columns.Count + 1).ToString());
}
foreach (var row in rows) {
table.Rows.Add(row.ToArray());
}
}

return table;

}

}
}