[]
DioDocs for Excel では、独自の解析ルールを使用してCSVファイルをインポートし、特定の表示形式を設定した結果を取得することができます。例えば、数値型のデータを持つセルは自動的に数値型のセルとして解析されますが、場合によっては、数値型のデータを文字列として読み込みたいこともあります。このように DioDocs for Excel のデフォルトの解析設定では期待する結果が取得できない場合に、この機能を使用して独自のルールを定義することができます。
ICsvParserインタフェースを実装し、Parseメソッドで独自の解析ルールを定義することで、カスタマイズされた解析ルールでCSVファイルをインポートすることができます。 Parseメソッドは、CsvParseResultクラスとCsvParseContextクラスのオブジェクトをパラメータとして受け取ります。 CsvParseResultクラスは解析されたテキストを表すので、CsvParseResultオブジェクトに独自の解析ルールで生成した結果を渡し、CsvParseContextクラスで対象のセルの位置とテキスト情報を指定することができます。 ICsvParserインタフェースを実装したら、CsvOpenOptionsクラスのParserプロパティに渡して、CSVファイルをインポートする際に期待通りの結果を得られるようにします。
//CsvOpenOptionsクラスのインスタンスと独自の解析ルールを作成します。
CsvOpenOptions csvOpenOptions = new CsvOpenOptions();
csvOpenOptions.Parser = new CustomParser();
//オプションを使用してCSVファイルを開きます。
workbook.Open(fileStream, csvOpenOptions);
public class CustomParser : ICsvParser
{
public void Parse(CsvParseResult csvParseResult, CsvParseContext context)
{
if (context.Text.StartsWith("00"))
{
csvParseResult.Value = context.Text;
}
else if (context.Column == 5 || context.Column == 6)
{
csvParseResult.NumberFormat = "#,##0";
}
else if (csvParseResult.NumberFormat.Equals("yyyy/m/d h:mm"))
{
csvParseResult.NumberFormat = "yyyy/m/d";
}
}
}