CSVファイルを書き込むときに、データの特定の列で少し問題があります。ほとんどの場合、値は11文字/桁よりも長くなります。したがって7.47313E+11
、CSV のように生成され、実際にはと読み取られるはず747313016112
です。私は最初、この問題を解決するための参照としてこの回答された質問を使用していましたが、機能していません。
注意すべき1つの点は、DBの列(というタイトルBarcode
)がvarcharであることです。ただし、この列に保存されるのは数値のみです。したがって、CSV生成プロセス中(または生成後)のどこかで、Excelはそれを文字列ではなく数値として認識していると思います。
これまでの私の作業コードは次のとおりです。
public static void GenerateChartsCSVFile(IEnumerable<ChartsData> chartsData)
{
string fullPath = "C:\\chart-data.csv";
using (var writer = new StreamWriter(fullPath, true, Encoding.GetEncoding("iso-8859-1")))
using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture))
{
csv.WriteRecords(chartsData);
writer.Flush();
}
if (File.Exists(fullPath))
Console.WriteLine("Charts CSV file " + csvFile + " successfully created!");
else
Console.WriteLine("Oops, something went wrong with generating the Charts CSV file.");
}
データ・モデル:
public class ChartsData
{
public string CatalogueID { get; set; }
public string Barcode { get; set; }
public string Title { get; set; }
public string ReleaseDate { get; set; }
public int DiscNo { get; set; }
public int TrackNo { get; set; }
public string TrackTitle { get; set; }
public string ISRC { get; set; }
public string Duration { get; set; }
public string LabelID { get; set; }
public string Label { get; set; }
public string TrackContributors { get; set; }
}
事前にどうもありがとうございました!
1組の二重引用符を追加するだけです。CsvHelperは、文字列内の引用符を別の二重引用符のセットで自動的にエスケープします。文字列=""747313016112""
は=""""747313016112""""
、CsvHelperが各二重引用符をエスケープするため、最終的には次のようになります。これが、"747313016112"
Excel内で値が表示される理由です。
chartsData.Barcode = "=\"" + chartsData.Barcode + "\"";
- フィールドを囲むために二重引用符を使用する場合、フィールド内に表示される二重引用符は、その前に別の二重引用符を付けることでエスケープする必要があります。
例えば:
「aaa」、「b」、「bb」、「ccc」
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加