4

データをcsvファイルにエクスポートする方法を書きました。セルの値がDEC20csvにある場合、20-Decどちらが正しくないかを取得しています。

私のコードは次のようなものです:

for (int i = 0; i < myData.Count(); i++)
{
    sb.AppendLine(string.Join(delimiter, 
                              Common.FormatExportString(myData[i].Code),
                              Common.FormatExportString(myData[i].Name),
                              Common.FormatExportString(myData[i].Description)));
}
//returns the file after writing the stream to the csv file.
return File(new System.Text.UTF8Encoding().GetBytes(sb.ToString()), "text/csv", fileName);

stringC# を使用して、Excel (csv) ファイルに表示される正確な形式を取得するのを手伝ってください。

例: myData[i].Name データは

DEC20、または 2-5

このような、

しかし、csv(Excel)の出力は次のように表示されています

12月20日と5月5日

元のものの代わりに。

4

4 に答える 4

11

問題はcsvエクスポートに関するものではありません.csvファイルをメモ帳で開いた場合、整形式です。セルの種類を日付として自動判別し、日付として表示するExcelです。

この動作を回避する=には、以下に示すように、テキストを引用符で囲み、その前にa を置きます。

= "DEC20"

ファイルは次のようになります

= "field1", = "field2", = "field...", = "DEC20", ...

メソッドは次のようになります。

for (int i = 0; i < myData.Count(); i++)
{
    sb.AppendLine(string.Join(delimiter, 
                              " = \"",
                              Common.FormatExportString(myData[i].Code),
                              Common.FormatExportString(myData[i].Name),
                              Common.FormatExportString(myData[i].Description)
                              "\""));
}

//returns the file after writing the stream to the csv file.
return File(new System.Text.UTF8Encoding().GetBytes(sb.ToString()), "text/csv", fileName);
于 2013-01-10T09:34:35.390 に答える
2

CSV は、Excel がテキストに既定の形式を適用できるようにする非常に単純な形式です。CSV を使用せずに Excel ファイルを作成することをお勧めしますが、Excel API セルの書式設定方法を指定する必要があります。

Excel COM オブジェクトを使用すると、ネイティブ Excel ファイルを書き込むことができます。ここでそれについて読むことができます: http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/ef11a193-54f3-407b-9374-9f5770fd9fd7

于 2013-01-10T09:38:21.590 に答える
0

文字列が折りたたまれている場合は、Excel で受け入れられるように正しい方法で文字列を操作する必要があります。

文字列に含まれている場合は、一重引用符 ('') で「'ur string'」を追加し、文字列全体を="your string with so all special characters and the commas"

于 2013-07-23T07:33:21.043 に答える